Se você deseja fazer uma pausa, use java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Dormir por um segundo ou
TimeUnit.MINUTES.sleep(1);
Dormir por um minuto.
Como se trata de um loop, isso apresenta um problema inerente - desvio. Toda vez que você executa o código e, em seguida, dorme, estará um pouco à deriva, digamos, a cada segundo. Se este for um problema, não use sleep
.
Além disso, sleep
não é muito flexível quando se trata de controle.
Para executar uma tarefa a cada segundo ou com um atraso de um segundo, recomendo vivamente um ScheduledExecutorService
e ou scheduleAtFixedRate
ou scheduleWithFixedDelay
.
Por exemplo, para executar o método a myTask
cada segundo (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");
}
E no 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()
.