Duraklatmak istiyorsanız şunu kullanın java.util.concurrent.TimeUnit:
TimeUnit.SECONDS.sleep(1);
Bir saniye uyumak veya
TimeUnit.MINUTES.sleep(1);
Bir dakika uyumak.
Bu bir döngü olduğu için, doğasında var olan bir sorun - sürüklenme ortaya çıkar. Her kod çalıştırdığınızda ve sonra uyuduğunuzda, her saniye biraz koşmaktan sürükleneceksiniz. Bu bir sorunsa kullanmayın sleep.
Ayrıca, sleepkontrol söz konusu olduğunda çok esnek değildir.
Bir görevi her saniye veya bir saniyelik bir gecikmeyle yürütmek için bir veya ikisini şiddetle öneririm .ScheduledExecutorServicescheduleAtFixedRatescheduleWithFixedDelay
Örneğin, yöntemi myTasksaniyede bir çalıştırmak için (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");
}
Java 7'de:
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().