(一)在xml里加入task的命名空間java
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <task:annotation-driven /> </beans>
(二)啓用註解驅動的定時任務spring
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <task:annotation-driven /> </beans>
(三)定時任務測試
Class : ATaskspa
package com.xindatai.ibs.liang; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ATask implements IATask { @Scheduled(cron="0/10 * * * * ?") public void aTask() { try { Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } DateFormat df = new SimpleDateFormat("HH:mm:ss"); System.out.println(df.format(new Date()) + "********A任務每10秒執行一次進入測試"); } }
Class : BTask線程
package com.xindatai.ibs.liang; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class BTask implements IBTask { @Scheduled(cron="0/5 * * * * ?") public void bTask() { System.out.println(new SimpleDateFormat("HH:mm:ss").format(new Date()) + "********B任務每5秒執行一次進入測試"); } }
Console : code
20:11:50********A任務每10秒執行一次進入測試 20:11:50********B任務每5秒執行一次進入測試 20:11:55********B任務每5秒執行一次進入測試 20:12:00********B任務每5秒執行一次進入測試 20:12:20********A任務每10秒執行一次進入測試 20:12:20********B任務每5秒執行一次進入測試 20:12:25********B任務每5秒執行一次進入測試 20:12:30********B任務每5秒執行一次進入測試 20:12:50********A任務每10秒執行一次進入測試 20:12:50********B任務每5秒執行一次進入測試 20:12:55********B任務每5秒執行一次進入測試 20:13:20********A任務每10秒執行一次進入測試 20:13:20********B任務每5秒執行一次進入測試 20:13:25********B任務每5秒執行一次進入測試 20:13:50********A任務每10秒執行一次進入測試 20:13:50********B任務每5秒執行一次進入測試 20:13:55********B任務每5秒執行一次進入測試 20:14:00********B任務每5秒執行一次進入測試 20:14:20********A任務每10秒執行一次進入測試 20:14:20********B任務每5秒執行一次進入測試 20:14:25********B任務每5秒執行一次進入測試 20:14:30********B任務每5秒執行一次進入測試 20:14:50********A任務每10秒執行一次進入測試 20:14:50********B任務每5秒執行一次進入測試 20:14:55********B任務每5秒執行一次進入測試 20:15:20********A任務每10秒執行一次進入測試 20:15:20********B任務每5秒執行一次進入測試 20:15:25********B任務每5秒執行一次進入測試 20:15:30********B任務每5秒執行一次進入測試 20:15:50********A任務每10秒執行一次進入測試 20:15:50********B任務每5秒執行一次進入測試 20:15:55********B任務每5秒執行一次進入測試 20:16:00********B任務每5秒執行一次進入測試 20:16:20********A任務每10秒執行一次進入測試 20:16:20********B任務每5秒執行一次進入測試 20:16:25********B任務每5秒執行一次進入測試 20:16:30********B任務每5秒執行一次進入測試 20:16:50********A任務每10秒執行一次進入測試 20:16:50********B任務每5秒執行一次進入測試 20:16:55********B任務每5秒執行一次進入測試 20:17:20********A任務每10秒執行一次進入測試 20:17:20********B任務每5秒執行一次進入測試 20:17:25********B任務每5秒執行一次進入測試 20:17:30********B任務每5秒執行一次進入測試 20:17:50********A任務每10秒執行一次進入測試 20:17:50********B任務每5秒執行一次進入測試 20:17:55********B任務每5秒執行一次進入測試 20:18:20********A任務每10秒執行一次進入測試 20:18:20********B任務每5秒執行一次進入測試 20:18:25********B任務每5秒執行一次進入測試 20:18:50********A任務每10秒執行一次進入測試 20:18:50********B任務每5秒執行一次進入測試 20:18:55********B任務每5秒執行一次進入測試 20:19:00********B任務每5秒執行一次進入測試 20:19:20********A任務每10秒執行一次進入測試 20:19:20********B任務每5秒執行一次進入測試 20:19:25********B任務每5秒執行一次進入測試 20:19:30********B任務每5秒執行一次進入測試 20:19:50********A任務每10秒執行一次進入測試 20:19:50********B任務每5秒執行一次進入測試 20:19:55********B任務每5秒執行一次進入測試 20:20:20********A任務每10秒執行一次進入測試 20:20:20********B任務每5秒執行一次進入測試 20:20:25********B任務每5秒執行一次進入測試 20:20:50********A任務每10秒執行一次進入測試 20:20:50********B任務每5秒執行一次進入測試 20:20:55********B任務每5秒執行一次進入測試 20:21:00********B任務每5秒執行一次進入測試 20:21:20********A任務每10秒執行一次進入測試 20:21:20********B任務每5秒執行一次進入測試 20:21:25********B任務每5秒執行一次進入測試 20:21:50********A任務每10秒執行一次進入測試 20:21:50********B任務每5秒執行一次進入測試 20:21:55********B任務每5秒執行一次進入測試 20:22:20********A任務每10秒執行一次進入測試 20:22:20********B任務每5秒執行一次進入測試 20:22:25********B任務每5秒執行一次進入測試 20:22:30********B任務每5秒執行一次進入測試 20:22:50********A任務每10秒執行一次進入測試 20:22:50********B任務每5秒執行一次進入測試 20:22:55********B任務每5秒執行一次進入測試 20:23:00********B任務每5秒執行一次進入測試 20:23:20********A任務每10秒執行一次進入測試 20:23:20********B任務每5秒執行一次進入測試 20:23:25********B任務每5秒執行一次進入測試
spring的定時任務默認是單線程,多個任務執行起來時間會有問題:B任務會由於A任務執行起來須要20S而被延後20S執行orm
(一)在xml里加入task的命名空間xml
(二)啓用註解驅動的定時任務blog
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation=" http://www.springframework.org/schema/beans classpath:/org/springframework/beans/factory/xml/spring-beans-4.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd"> <!-- 啓用annotation方式 --> <task:annotation-driven scheduler="myScheduler" /> <!-- 配置任務線程池 --> <task:scheduler id="myScheduler" pool-size="5" /> </beans>
Console : io
啦啦啦
啦啦啦
啦啦啦
啦啦啦
package com.xindatai.ibs.liang;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;@Componentpublic class ATask implements IATask {@Scheduled(cron="0/10 * * * * ?")public void aTask() {try {Thread.sleep(20000);} catch (InterruptedException e) {e.printStackTrace();}DateFormat df = new SimpleDateFormat("HH:mm:ss");System.out.println(df.format(new Date()) + "********A任務每10秒執行一次進入測試");}}