Últimamente he estado usando bucles con números grandes para imprimir Hello World:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it's 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
Entiendo que esta es una forma muy tonta de hacerlo, pero nunca he usado ninguna biblioteca de temporizadores en Java todavía. ¿Cómo se modificaría lo anterior para imprimir cada 3 segundos, por ejemplo?

Respuestas:
También puede echar un vistazo a
TimeryTimerTaskclases que se pueden utilizar para programar su tarea para ejecutar cadansegundo.Necesita una clase que amplíe
TimerTasky anule elpublic void run()método, que se ejecutará cada vez que pase una instancia de esa clase altimer.schedule()método.Aquí hay un ejemplo, que imprime
Hello Worldcada 5 segundos: -fuente
schedulemétodo de 2 parámetros se ejecutará una vez después del retraso especificado. El 3-paramscheduleoscheduleAtFixedRatenecesitaría ser usado.ExecutorServicepara estas tareas. Esa es realmente una gran mejora con respecto a la API Thread tradicional. Simplemente no lo usé al momento de responder.Timer timer = new Timer(true);debe establecersetruecomo un demonio. A menos que desee que el temporizador siga ejecutándose después de cerrar la aplicación.Si desea hacer una tarea periódica, use a
ScheduledExecutorService. Específicamente ScheduledExecutorService.scheduleAtFixedRateEl código:
fuente
TimerTaskvariante. Curiosamente, noté que la respuesta aceptada en realidad no es correcta: \ La edad de las dos API a un lado,ScheduledExecutorServicees simplemente más intuitiva y declarativa. El uso deTimeUnitcomo parámetro deja mucho más claro lo que está ocurriendo. Atrás quedaron los días de código como5*60*1000 // 5 minutes.Runnable helloRunnable = () -> { /*code */ };que es aún más hermoso;)Intenta hacer esto:
Este código ejecutará print para consolar Hello World cada 5000 milisegundos ( 5 segundos). Para obtener más información, lea https://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
fuente
Lo resuelvo con un temporizador, espero que ayude. He usado un temporizador desde
java.util.TimeryTimerTaskdesde el mismo paquete. Vea abajo:fuente
Puedes usar
Thread.sleep(3000)dentro para loop.Nota: Esto requerirá un
try/catchbloqueo.fuente
se crea un bucle infinito y se configura la tarea del planificador de anuncios.
fuente
La forma más fácil sería configurar el hilo principal para que duerma 3000 milisegundos (3 segundos):
Esto detendrá el hilo al menos X milisegundos. El hilo podría estar durmiendo más tiempo, pero eso depende de la JVM. Lo único garantizado es que el hilo dormirá al menos esos milisegundos. Echa un vistazo al
Thread#sleepdocumento:fuente
El uso
java.util.Timery elTimer#schedule(TimerTask,delay,period)método te ayudarán.fuente
Esta es la forma simple de usar hilo en java:
fuente
Lo que dijo. Puede manejar las excepciones como quiera, pero Thread.sleep (milisegundos); Es la mejor ruta a seguir.
fuente
Aquí hay otra forma simple de usar la interfaz Runnable en Thread Constructor
fuente
Añadir
Thread.sleepfuente
Para aplicaciones pequeñas está bien usar Timer y TimerTask como mencionó Rohit, pero en aplicaciones web usaría Quartz Scheduler para programar trabajos y realizar dichos trabajos periódicos.
Ver tutoriales para la programación de cuarzo.
fuente
fuente