一時停止したい場合は、次を使用してjava.util.concurrent.TimeUnit
ください:
TimeUnit.SECONDS.sleep(1);
1秒間寝るか
TimeUnit.MINUTES.sleep(1);
ちょっと寝る。
これはループであるため、ドリフトという固有の問題があります。コードを実行してからスリープするたびに、たとえば毎秒実行から少しドリフトします。これが問題である場合は、使用しないでくださいsleep
。
さらに、sleep
コントロールに関しては、それほど柔軟ではありません。
毎秒タスクを実行するためか、1秒の遅延で、私は考えを強くお勧めします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()
ます。