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, sleepnã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 ScheduledExecutorServicee ou scheduleAtFixedRateou scheduleWithFixedDelay.
Por exemplo, para executar o método a myTaskcada 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().