Nota del traductor: personalmente creo que usar tareas cronometradas para ejecutar la recolección de basura no es un buen ejemplo. datos, archivos, etc.
En este artículo, presentaré 3 métodos de implementación diferentes:
1. Implementación de hilos ordinarios
2. Implementación de TimeTask
3. Implementación de ProgramedExecutorService
1. Hilo ordinario
Esto es lo más común. Esto se puede implementar de manera rápida y fácil, el código es el siguiente:
La copia del código es la siguiente:
Tarea de clase pública1 {
public static void main (string [] args) {
// correr en un segundo
Final Long TimeInterval = 1000;
Runnable runnable = new runnable () {
public void run () {
while (verdadero) {
// -------- Código para la tarea para ejecutarse
System.out.println ("¡Hola!");
// ---------- termina aquí
intentar {
Thread.sleep (TimeInterval);
} capt (interruptedException e) {
E.PrintStackTrace ();
}
}
}
};
Thread Thread = New Thread (Runnable);
Thread.Start ();
}
}
2. Use Timer y TimeTask
La implementación anterior es muy rápida y fácil, pero también carece de alguna funcionalidad.
En comparación con el método anterior, el uso de Timer y TimeTask tiene los siguientes beneficios:
1. Controlado al iniciar y cancelar tareas
2. Puede especificar el tiempo de retraso que desee al ejecutar una tarea por primera vez
Durante la implementación, la clase de temporizador puede programar tareas, y TimeTask implementa tareas específicas en el método run ().
Las instancias del temporizador pueden programar multitarea, y es segura de hilo.
Cuando se llama al constructor del temporizador, crea un hilo que se puede usar para programar tareas.
Aquí está el código:
La copia del código es la siguiente:
import java.util.timer;
import java.util.timerTask;
Tarea de clase pública2 {
public static void main (string [] args) {
Tarea de TimeTask = new TimeTask () {
@Anular
public void run () {
// tarea de ejecución va aquí
System.out.println ("¡Hola!");
}
};
Temporizador temporizador = new Timer ();
retraso largo = 0;
Period Periodo largo = 1 * 1000;
// programa la tarea que se ejecutará en un intervalo
Timer.schedleatFixedRate (tarea, retraso,
IntegerPeríodo);
} // final de main
}
Estas clases existen desde JDK 1.3.
3. ProgramedExecutorService
ProgramedExecutorService se introdujo como una clase de herramientas concurrente de Java SE 5 Java.util.concurrent, que es el método de implementación de tareas cronometrado más ideal.
En comparación con los dos métodos anteriores, tiene los siguientes beneficios:
1. En comparación con el hilo único del temporizador, ejecuta tareas a través de un grupo de hilos.
2. Puede establecer el tiempo de retraso para la primera ejecución de la tarea
3. Proporcione buenos acuerdos para establecer el intervalo de tiempo de ejecución
El siguiente es el código de implementación.
La copia del código es la siguiente:
import java.util.concurrent.executors;
import java.util.concurrent.scheduledExecutorService;
import java.util.concurrent.timeunit;
Tarea de clase pública3 {
public static void main (string [] args) {
Runnable runnable = new runnable () {
public void run () {
// tarea de ejecución va aquí
System.out.println ("¡Hola!");
}
};
Servicio ProchuledExecutorService = Ejecutores
.newsinglethreadscheduledExecutor ();
servicio.schedleatFixedRate (runnable, 0, 1, timeunit.seconds);
}
}