3 回答

TA贡献1772条经验 获得超8个赞
此代码将阻止您的 UI。您应该在单独的线程中运行它,并在检查之间添加一些延迟。一个更简单的解决方案也是使用 Timer
例如,每秒检查一次:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
// your code
}
}, 1000);

TA贡献1864条经验 获得超2个赞
有两种简单的方法可以摆脱 Java 中增强的 for 循环。一种是抛出异常,尽管对于正常的流控制,这被认为是异常使用异常。
另一种是使用break;
which 将使您摆脱最直接的 for 循环。人们并不总是喜欢return
中间函数或break
中间 for 循环(或continue
就此而言),因为它们的行为有点像 goto/jump 语句并降低代码的清晰度。另一方面,这正是 break 的目的,因此没有关于滥用指令的争论。
另一种方法是使用普通的 while 循环并放弃普通迭代器的增强型 for 循环。在这种情况下,listOfHosts.iterator()
, 将允许您计算.hasNext()
和的组合isReachable(...)
来决定是否继续循环。

TA贡献1856条经验 获得超17个赞
// suppose listOfhosts is a String Array
List<String> srcHostList = new ArrayList<String>();
srcHostList.addAll(Arrays.asList(listOfhosts));
List<String> offlineList = new ArrayList<String>();
while( srcHostList.size() > 0) {
offlineList.clear();
for(String ip: srcHostList) {
boolean isOnline = true;
try{
// TODO check online
}catch(Exception ex){
// TODO handle exception
isOnline = false;
}
if(!isOnline) offlineList.add(ip);
}
srcHostList.removeAll(offlineList);
}
添加回答
举报