หากคุณต้องการหยุดชั่วคราวให้ใช้java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
เข้านอนเป็นเวลาหนึ่งวินาทีหรือ
TimeUnit.MINUTES.sleep(1);
เพื่อนอนหลับเป็นเวลาหนึ่งนาที
เนื่องจากนี่คือการวนซ้ำสิ่งนี้นำเสนอปัญหาโดยธรรมชาติ - การดริฟท์ ทุกครั้งที่คุณเรียกใช้รหัสและจากนั้นนอนหลับคุณจะลอยจากการทำงานเล็กน้อยพูดทุกวินาที sleep
ถ้าเรื่องนี้เป็นปัญหาแล้วไม่ได้ใช้
นอกจากนี้sleep
ยังไม่ยืดหยุ่นมากเมื่อต้องควบคุม
สำหรับการใช้งานทุกวินาทีหรือที่ล่าช้าหนึ่งวินาทีฉันจะขอแนะนำScheduledExecutorService
และทั้งหรือscheduleAtFixedRate
scheduleWithFixedDelay
ตัวอย่างเช่นการเรียกใช้เมธอดmyTask
ทุกวินาที (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:
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()
ใช้