¿Quizás tienes una mejor opción para las tareas de cronometraje? -Tarea crontab de sincronización de Linux

¿Quizás tienes una mejor opción para las tareas de cronometraje?  -Tarea crontab de sincronización de Linux
Cuando se acaba de construir un sistema, a menudo es una tarea que debe ejecutarse regularmente, pero si no es así, alguien recomienda el temporizador de Java

import java.util.Timer;
import java.util.TimerTask;

public class TimerTest extends TimerTask {

private String jobName = "";

public TimerTest(String jobName) {
super();
this.jobName = jobName;
}

@Override
public void run() {
System.out.println("execute " + jobName);
}

public static void main(String[] args) {
Timer timer = new Timer();
long delay1 = 1 * 1000;
long period1 = 1000;
// 从现在开始 1 秒钟之后,每隔 1 秒钟执行一次 job1
timer.schedule(new TimerTest("job1"), delay1, period1);
long delay2 = 2 * 1000;
long period2 = 2000;
// 从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 job2
timer.schedule(new TimerTest("job2"), delay2, period2);
}
}

O sheduler,

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorTest implements Runnable {
 private String jobName = "";

 public ScheduledExecutorTest(String jobName) {
 super();
 this.jobName = jobName;
 }

 @Override
 public void run() {
 System.out.println("execute " + jobName);
 }

 public static void main(String[] args) {
 ScheduledExecutorService service = Executors.newScheduledThreadPool(10);

 long initialDelay1 = 1;
 long period1 = 1;
 // 从现在开始1秒钟之后,每隔1秒钟执行一次job1
 service.scheduleAtFixedRate(
 new ScheduledExecutorTest("job1"), initialDelay1,
 period1, TimeUnit.SECONDS);

 long initialDelay2 = 1;
 long delay2 = 1;
 // 从现在开始2秒钟之后,每隔2秒钟执行一次job2
 service.scheduleWithFixedDelay(
 new ScheduledExecutorTest("job2"), initialDelay2,
 delay2, TimeUnit.SECONDS);

Ambos pueden ejecutarse en una sola máquina sin ningún problema, pero si hay varias máquinas, no se pueden usar debido a la ejecución repetida.

La conveniencia de la solución puede ser usar bloqueos (base de datos o redis, etc.), lo que aumentará la complejidad del programa. Aquí hay una mejor solución: use el crontab que viene con linux

1. Utilice crontab

crontab -u // Establecer el servicio cron de un usuario
crontab -l // Enumerar los detalles del
servicio cron de un usuario
crontab -r // Eliminar el servicio cron de un usuario crontab -e // Editar un usuario servicio cron

2. expresión cron

Formato básico:

          • comando Tiempo compartido día, mes y semana
            . La primera columna del comando indica los minutos del 1 al 59. Utilice cada minuto o / 1 para indicar la frecuencia

La segunda columna indica las horas 1 a 23 (0 significa 0 en punto)

La tercera columna indica las fechas 1 ~ 31

La cuarta columna indica el mes 1-12,
la quinta columna número de identificación semana 0-6 (0 significa domingo)

Comando a ejecutar en la columna 6

3. Guardar

Supongo que te gusta

Origin blog.51cto.com/15015181/2556412
Recomendado
Clasificación