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