Nếu bạn muốn tạm dừng thì sử dụng java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Ngủ một giây hoặc
TimeUnit.MINUTES.sleep(1);
Để ngủ một phút.
Vì đây là một vòng lặp, điều này thể hiện một vấn đề cố hữu - trôi dạt. Mỗi khi bạn chạy mã và sau đó ngủ, bạn sẽ trôi đi một chút từ việc chạy, nói, mỗi giây. Nếu đây là một vấn đề thì không nên sử dụngsleep
.
Hơn nữa, sleep
không linh hoạt khi kiểm soát.
Để chạy một nhiệm vụ mỗi giây hoặc ít một giây chậm trễ tôi sẽ mạnh mẽ đề nghị một ScheduledExecutorService
và một trong hai scheduleAtFixedRate
hoặc scheduleWithFixedDelay
.
Ví dụ: để chạy phương thức myTask
mỗi giây (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");
}
Và trong Java 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()
.