Heim  >  Artikel  >  Java  >  Spring integriert TimerTask, um die geplante Aufgabenplanung zu implementieren

Spring integriert TimerTask, um die geplante Aufgabenplanung zu implementieren

高洛峰
高洛峰Original
2017-02-07 15:27:351601Durchsuche

1. Vorwort

In den Projekten des Unternehmens werden in diesem Blogbeitrag zeitgesteuerte Aufgaben verwendet. Tatsächlich wird TimerTask in tatsächlichen Projekten nicht häufig verwendet 🎜>Da es nicht zu einer bestimmten Zeit ausgeführt werden kann, kann es das Programm nur mit einer bestimmten Häufigkeit ausführen.

2. TimerTask


Timer im JDK ist eine Timer-Klasse, die kann die angegebene geplante Aufgabe konfigurieren.

TimerTask ist eine geplante Aufgabenklasse. Diese Klasse implementiert die Runnable-Schnittstelle und ist eine abstrakte Klasse. Wir können diese Klasse erben, um geplante Aufgaben zu implementieren.

/** 
 * 继承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. Integrieren Sie die beiden Kernklassen von Spring


: ScheduledTimerTask, TimerFactoryBean

Die ScheduledTimerTask-Klasse ist eine Wrapper-Implementierung von TimerTask, über die Triggerinformationen für diese Aufgabe definiert werden können.
Die Mit der TimerFactoryBean-Klasse kann Spring mithilfe der Konfiguration Trigger erstellen und automatisch Timer-Instanzen für einen bestimmten Satz von ScheduledTimerTask-Beans erstellen.

1. Einführen von Jar-Paketen: spring.jar, commons-logging.jar

2 Klasse:

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

<?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. Das Obige ist der gesamte Inhalt dieses Artikels, I Ich hoffe, dass es für das Lernen aller hilfreich sein wird, und ich hoffe, dass jeder die chinesische PHP-Website unterstützen wird.

Weitere Artikel im Zusammenhang mit der Integration von TimerTask in Spring zur Implementierung der geplanten Aufgabenplanung finden Sie auf der chinesischen PHP-Website!
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); 
      } 
    } 
  } 
}
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn