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, sleep
kontrol 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 .ScheduledExecutorService
scheduleAtFixedRate
scheduleWithFixedDelay
Örneğin, yöntemi myTask
saniyede 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()
.