Maison > Java > javaDidacticiel > le corps du texte

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

高洛峰
Libérer: 2017-02-07 15:27:35
original
1593 Les gens l'ont consulté

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); 
  } 
}
Copier après la connexion
. 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++; 
  } 
}
Copier après la connexion
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>
Copier après la connexion
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); 
      } 
    } 
  } 
}
Copier après la connexion
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 !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!