Maison  >  Article  >  Java  >  Spring intègre TimerTask pour implémenter la planification des tâches planifiées

Spring intègre TimerTask pour implémenter la planification des tâches planifiées

高洛峰
高洛峰original
2017-02-07 15:27:351586parcourir

1. Préface

Récemment, des tâches chronométrées ont été utilisées dans les projets de l'entreprise. Cet article de blog résumera les tâches chronométrées de TimerTask. En fait, TimerTask n'est pas beaucoup utilisé dans les projets réels. 🎜>Parce qu'il ne peut pas s'exécuter à une heure spécifiée, il ne peut laisser le programme s'exécuter qu'à une certaine fréquence.

2 TimerTask


Timer dans JDK est une classe de minuterie, qui. peut configurer la tâche planifiée spécifiée.

TimerTask dans JDK est une classe de tâches planifiées. Cette classe implémente l'interface Runnable et est une classe abstraite.

/** 
 * 继承TimerTask实现定时任务 
 */
public class MyTask extends TimerTask { 
  
  @Override
  public void run() { 
    String currentTime = new SimpleDateFormat("yyy-MM-dd hh:mm:ss").format(new Date()); 
    System.out.println(currentTime + " 定时任务正在执行..."); 
  } 
  
  public static void main(String[] args) { 
    Timer timer = new Timer(); 
      
    // 1秒钟执行一次的任务, 参数为: task, delay, peroid 
    timer.schedule(new MyTask(), 2000, 1000); 
  } 
}
. 3. Intégrez les deux classes principales de Spring


 : ScheduledTimerTask, TimerFactoryBean

La classe ScheduledTimerTask est une implémentation wrapper de TimerTask, à travers laquelle les informations de déclenchement peuvent être définies pour cette tâche.
Le La classe TimerFactoryBean permet à Spring de créer des déclencheurs à l'aide de la configuration et de créer automatiquement des instances Timer pour un ensemble spécifié de beans ScheduledTimerTask.

1 Présentez les packages Jar : spring.jar, commons-logging.jar

2. classe :

/** 
 * 定时调度业务类 
 */
public class TaskService extends TimerTask { 
  private int count = 1; 
  
  public void run() { 
    System.out.println("第" + count + "次执行定时任务"); 
    count++; 
  } 
}
3. Configuration de base :

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 
    
  <bean id="taskService" class="com.zdp.service.TaskService"></bean> 
  <bean id="scheduledTimerTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
    <property name="timerTask" ref="taskService" /> 
      
    <!-- 每隔一天执行一次配置: 24*60*60*1000 -->
    <!-- 每1秒钟程序执行一次 -->
    <property name="period" value="1000" /> 
      
    <!-- 程序启动4秒钟后开始执行 -->
    <property name="delay" value="4000" /> 
  </bean> 
    
  <bean id="timerFactoryBean" class="org.springframework.scheduling.timer.TimerFactoryBean"> 
    <property name="scheduledTimerTasks"> 
      <list> 
        <ref bean="scheduledTimerTask" /> 
      </list> 
    </property> 
  </bean> 
</beans>
4. Classe de test :

public class Main { 
  public static void main(String[] args) { 
    // 加载spring配置文件 
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); 
    System.out.println("<<-------- 启动定时任务 -------- >>"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
    while (true) { 
      try { 
        if (reader.readLine().equals("quit")) { 
          System.out.println("<<-------- 退出定时任务 -------- >>"); 
          System.exit(0); 
        } 
      } catch (IOException e) { 
        throw new RuntimeException("error happens...", e); 
      } 
    } 
  } 
}
Ce qui précède est l'intégralité du contenu de cet article, je J'espère que cela sera utile à l'apprentissage de tout le monde, et j'espère que tout le monde soutiendra le site Web PHP en chinois.

Pour plus d'articles liés à Spring intégrant TimerTask pour implémenter la planification des tâches planifiées, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn