Uso java.util.concurrent.TimeUnit:
TimeUnit.SECONDS.sleep(1);
Duerme un segundo o
TimeUnit.MINUTES.sleep(1);
Duerme 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 retraso de un segundo, recomendaría encarecidamente un [ ScheduledExecutorService] [1] y [ scheduleAtFixedRate] [2] o [scheduleWithFixedDelay ] [3].
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");
}