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
.
Thêm 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
] [1] và một trong hai [ scheduleAtFixedRate
] [2] hoặc [scheduleWithFixedDelay
] [3].
Để 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");
}