Jika Anda ingin berhenti kemudian 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 merupakan masalah maka jangan gunakan sleep.
Lebih jauh, sleeptidak terlalu fleksibel dalam hal kontrol.
Untuk menjalankan tugas setiap detik atau pada penundaan satu detik saya akan sangat merekomendasikan ScheduledExecutorServicedan scheduleAtFixedRateatau atau scheduleWithFixedDelay.
Misalnya, untuk menjalankan metode myTasksetiap 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");
}
Dan di Jawa 7:
public static void main(String[] args) {
final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
myTask();
}
}, 0, 1, TimeUnit.SECONDS);
}
private static void myTask() {
System.out.println("Running");
}
Thread.Sleep().