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);
}
添加回答
舉報