일시 중지하려면 다음을 사용하십시오 java.util.concurrent.TimeUnit
.
TimeUnit.SECONDS.sleep(1);
1 초 동안 자거나
TimeUnit.MINUTES.sleep(1);
잠을 자다.
이것이 루프이기 때문에 이것은 고유 한 문제인 드리프트를 나타냅니다. 코드를 실행 한 다음 잠들 때마다 매 초마다 조금씩 표류하게됩니다. 이것이 문제라면를 사용하지 마십시오 sleep
.
또한 sleep
제어와 관련하여 매우 유연하지 않습니다.
매초마다 또는 1 초 지연으로 작업을 실행하려면 a 및 또는 중 하나를 적극 권장합니다 .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");
}
그리고 자바 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()
.