Si quieres hacer una pausa, usa java.util.concurrent.TimeUnit:
TimeUnit.SECONDS.sleep(1);
Para dormir por un segundo o
TimeUnit.MINUTES.sleep(1);
A dormir un minuto.
Como se trata de un bucle, esto presenta un problema inherente: la deriva. Cada vez que ejecute el código y luego duerma, perderá un poco la ejecución, por ejemplo, cada segundo. Si esto es un problema, no lo use sleep.
Además, sleepno es muy flexible cuando se trata de control.
Para ejecutar una tarea cada segundo o con un segundo de retraso, recomendaría encarecidamente a ScheduledExecutorServicey o scheduleAtFixedRateo scheduleWithFixedDelay.
Por ejemplo, para ejecutar el método 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");
}
Y en 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().