我正在編寫單線程程序,每次操作後都需要暫停。 (暫停= 1到60秒之間的隨機值)。Thread.sleep(60 * 1000)讓我的程序休眠半小時或更長時間
所以這樣的方法中寫道:
public void freeze() throws InterruptedException {
Thread.sleep(nextFreezeDurationSec * 1000);
calculateNextFreezeDuration();
}
,同時期待通過程序日誌中我發現了一個問題。 Аpparently,對於一些不明瞭我的理由,後500-700操作它使我的程序的時候一個更大的量睡(它曾經是超過一小時以上)
而且我寫的另一種方法:
public void freeze() {
long nextFreezeEnd = System.currentTimeMillis() + (nextFreezeDurationSec * 1000);
while (System.currentTimeMillis() < nextFreezeEnd) {
/*NOR*/
}
calculateNextFreezeDuration();
}
這個工作正常。但它吃瘋狂的CPU。
我將不勝感激對此問題的任何建議。
怎麼樣定時器嗎? –
也許還包含'calculateNextFreezeDuration()'?您是否嘗試過記錄'nextFreezeDurationSec'的值以確保它是預期值? – turbo
這是。沒什麼特別的。 private void calculateNextFreezeDuration(){ setNextFreezeDurationSec( random.nextInt(maxLimitSec - minLimitSec)+ minLimitSec ); } – nikopol86