3 回答
TA貢獻1853條經驗 獲得超18個贊
我根本不會使用 Calender 庫,而是使用System.currentTimeMillis()
這是一個在 5.5 秒后終止的 while 循環:
long end = System.currentTimeMillis() + 5500;
while (System.currentTimeMillis() < end) {
//Do something
}
//Exit after 5.5 seconds
這個版本的優點是,您可以在循環運行時更改結束時間,從而更改循環運行的時間。
TA貢獻1804條經驗 獲得超8個贊
與其實現我自己的,我更喜歡/使用Timer它是一種線程工具,可以在后臺線程中安排任務以供將來執行。像,
Timer t = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Five seconds");
}
};
t.schedule(task, TimeUnit.SECONDS.toMillis(5) + 500); // 5.5 seconds.
TA貢獻1830條經驗 獲得超9個贊
java.time
VoroX的回答是正確的。但是使用 java.time 使它更加優雅和自我記錄。
我們通過循環調用Instant.now每次以捕獲新的當前時間。日期時間對象不會自動更新。它們是那一刻的快照,凍結了。在每種情況下詢問您何時需要當前時間。
Duration wait = Duration.ofSeconds( 5 ).plusMillis( 500 ) ; // 5.5 seconds.
Instant now = Instant.now() ;
Instant stop = now.plus( d ) ;
while( Instant.now().isBefore( stop ) )
{
// Do some task.
}
在實際工作中,我還會添加一個檢查,stop.isAfter( start )以防 Duration 被編輯為負值。
添加回答
舉報
