我正在查找有關更改線程睡眠模式中睡眠的信息。基本上這裏是我的情況制定了......如何更改Thread.sleep()已睡眠的持續時間
public void run() {
while(running) {
//Update Stuff...
try {
long time = System.currentTimeMillis() + interval;
String dateFormatted = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss a").format(new Date(time));
Thread.sleep(interval);
} catch (InterruptedException e) {
//Handle Errors...
}
}
}
所以我在做什麼是程序啓動時,它會採取區間(目前60000),但是GUI有選項可以更改的時間間隔(例如1小時,2小時,3等)。我可以從GUI更新,並更改區間變量。
但是,當我改變它時,線程仍然處於睡眠狀態,並且將等待其完成,並在下一次迭代時更新。什麼是最好的方式來中斷這個當前正在睡眠的線程(或喚醒它?)。另外,我擔心它會「安全」,因爲它將在生產服務器上運行。
任何方向/指導是真棒。
從GUI中斷,在搭線中斷,開始新的價值 – zubergu
中斷似乎最乾淨的答案,我睡着了。順便說一句你的評論'/ /處理錯誤...'是錯誤的;中斷不是錯誤。 – Mordechai
您是否需要更改睡眠持續時間,或者您是否能夠在原始睡眠持續時間之後簡單地調用另一個Thread.sleep(anotherInterval)? – rodit