Gunakan java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Tidur selama satu detik atau
TimeUnit.MINUTES.sleep(1);
Tidur sebentar.
Karena ini adalah loop, ini menyajikan masalah bawaan - drift. Setiap kali Anda menjalankan kode dan kemudian tidur, Anda akan terhanyut sedikit dari berlari, katakanlah, setiap detik. Jika ini masalah maka jangan gunakan sleep
.
Lebih jauh, sleep
tidak terlalu fleksibel dalam hal kontrol.
Untuk menjalankan tugas setiap detik atau pada penundaan satu detik saya sangat merekomendasikan [ ScheduledExecutorService
] [1] dan [ scheduleAtFixedRate
] [2] atau [ scheduleWithFixedDelay
] [3].
Untuk menjalankan metode myTask
setiap detik (Java 8):
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(App::myTask, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}