A programação de tarefas refere -se a executar automaticamente tarefas com base em um determinado ponto de tempo, um determinado intervalo de tempo ou um determinado número de execuções.
Por exemplo, queremos que um sistema faça backup do arquivo de banco de dados todos os domingos às 21h, e podemos usar o agendamento de tarefas para implementá -lo. Para obter mais conveniência, precisamos iniciar automaticamente essa programação após o início do Tomcat.
Aqui está a API do TimerTask:
Abaixo está a API da classe Timer
No exemplo a seguir, duas funções são implementadas:
1. Monitore a inicialização e o desligamento do contêiner da Web do Tomcat
2. Quando o contêiner da web é iniciado, o cronograma de tarefas aloca o objeto de tarefas, a hora e o período.
Para monitorar as mudanças nos contêineres da web, você precisa registrar um ouvinte em web.xml primeiro
<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-Add Livener TimerListener AS A CLASSE CLASSE, <i ouvinte-class> com.util.timerlistener </lirer-class> </ouvinte> <libe-name> </libe-name> <lorde-File-List> <lmed-File> index.jsp </ld-Welcome-file> </weld-File-list> </bilep-app>
A segunda etapa é definir um objeto de tarefa, o TimerTask básico
package com.util;import java.util.Timer;import java.util.TimerTask;/** * 1. Define a task object* JDK -- The task object needs to inherit TimerTask * */public class DataBackup extends TimerTask{ @Override public void run() { //Describe the task content that the current task needs to be executed System.out.println("Connect the database to back up table junções e dados no arquivo SQL local "); }}Etapa 3. Monitore as alterações no contêiner da web. Quando o contêiner da web for iniciado, aloque tempo e ciclos para o agendamento de tarefas. O código a seguir contém vários exemplos.
pacote com.util; importar java.util.date; importar java.util.timer; importar javax.servlet.servletContextevent; importar javax.servlet.servletContextListener; classe pública TimerListener implementa o servletContextListener {Timer de estático privado; / *** Ouça o contêiner da web fecha*/ @Override public void contextDestroyed (servletContextevent scce) {System.out.println ("Web Container Close"); Timer.cancel (); } / *** Ouça a inicialização do contêiner da web* / @Override public void contextinitialized (servletContextevent scet) {System.out.println ("startup de contêineres da web"); / *** Prepare o medidor de temporizador*/ Timer = new Timer (); System.out.println ("O timer está em preparação e inicia o tempo e os períodos para agendamento de tarefas"); // Crie Backup de banco de dados de objeto de tarefas Backup = new Databackup (); // 1 cronograma (tarefa do TimerTask, tempo de dados) // Programe a tarefa especificada para iniciar a execução no horário especificado // o mês deve ser reduzido por um //timer.schedule(backup, nova data (115,8,10,9,54,0)); // 2 cronograma (tarefa do TimerTask, data na primeira hora, período longo) // cronograma (backup, nova data (115,8,10,10,0,0), 2000); //3schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) //Schedule(TimerTask task, long delay) // cronograma (tarefa do TimerTask, atraso longo) //timer.schedule(backup, 5000); // 4 Cronograma (Tarefa TimerTask, Longo Atraso, Período Longo) //timer.schedule(backup, 5000, 2000); // 5. Partem uma vez uma tarefa às 9h todos os dias //timer.schedule(backup, nova data (115,11,9,0,0), 24*60*60*1000); // 6. Partida depois de uma tarefa às 3 da manhã todos os sábados //timer.schedule(backup, nova data (115,8,12,3,0,0), 7*24*60*60*1000); }} Dessa forma, quando o Tomcat for iniciado, o objeto de tarefas começará a executar de acordo com o seu tempo e ciclo alocados.
Resumo: Use o Timer para implementar a programação de tarefas, primeiro crie um objeto de tarefa definido, como o backup aqui; Em seguida, instancie um cronômetro, instancie o objeto de tarefas e chame o método correspondente de acordo com os requisitos para alocar tempo e período ao objeto de tarefas. O exposto acima é a implementação do agendamento de tarefas. Quanto a quando esse temporizador é iniciado, ou seja, quando o temporizador começa a instantar, ele precisa ser determinado com base na situação real. Por exemplo, o código acima é iniciar o temporizador após o início do contêiner da web.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.