1. 程式人生 > >quarz實現一個定時任務

quarz實現一個定時任務

1.pom.xml

<properties>
    <quartz-version>2.2.1</quartz-version>
</properties>
<!-- quartz -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>${quartz-version}</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>${quartz-version}</version>
		</dependency>

2.快速實現一個定時任務

package com.cloudtech.web.quarz;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.cloudtech.web.dao.ModuleStateMapper;
import com.cloudtech.web.dao.StationInfoMapper;
import com.cloudtech.web.dao.StationStateMapper;
import com.cloudtech.web.dao.StationTypeCodeMapper;
import com.cloudtech.web.dao.SystemConfigMapper;
import com.cloudtech.web.dao.WarnNoticeMapper;
import com.cloudtech.web.dubbo.BaseDataResult;
import com.cloudtech.web.entity.ModuleRealTimeState;
import com.cloudtech.web.entity.StationInfo;
import com.cloudtech.web.entity.StationState;
import com.cloudtech.web.entity.StationTypeCode;
import com.cloudtech.web.entity.SystemConfig;
import com.cloudtech.web.entity.WarnNoticeInfo;
import com.cloudtech.web.enums.ModuleType;
import com.cloudtech.web.enums.OnlineState;
import com.cloudtech.web.enums.WarnLevel;
import com.cloudtech.web.enums.WarnType;
import com.cloudtech.web.util.Constans;

@Component
@Configurable
@EnableScheduling
public class ScheduledTasks{
	private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledTasks.class);
	

    //每1分鐘執行一次	
    @Scheduled(cron = "0 */1 *  * * * ")
    public void stationOfflineWarn(){
    	//檢查站點是否離線
    	checkStationOffline();
    }

cron表示式用於配置cronTrigger的例項。cron表示式實際上是由七個子表示式組成。這些表示式之間用空格分隔。

1.Seconds (秒)
2.Minutes(分)
3.Hours(小時)
4.Day-of-Month  (天)
5.Month(月)
6.Day-of-Week (周)
7.Year(年)

子表示式範圍:
1.Seconds (0~59)
2.Minutes (0~59)
3.Hours (0~23)
4.Day-of-Month (1~31,但是要注意有些月份沒有31天)
5.Month (0~11,或者"JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV,DEC")
6.Day-of-Week (1~7,1=SUN 或者"SUN, MON, TUE, WED, THU, FRI, SAT”)
7.Year (1970~2099)

表示式例子:

0 * * * * ? 每1分鐘觸發一次
0 0 * * * ? 每天每1小時觸發一次
0 0 10 * * ? 每天10點觸發一次
0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發 
0 30 9 1 * ? 每月1號上午9點半
0 15 10 15 * ? 每月15日上午10:15觸發

*/5 * * * * ? 每隔5秒執行一次
0 */1 * * * ? 每隔1分鐘執行一次
0 0 5-15 * * ? 每天5-15點整點觸發
0 0/3 * * * ? 每三分鐘觸發一次
0 0-5 14 * * ? 在每天下午2點到下午2:05期間的每1分鐘觸發 
0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發
0 0/5 14,18 * * ? 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
0 0 10,14,16 * * ? 每天上午10點,下午2點,4點 

0 0 12 ? * WED 表示每個星期三中午12點
0 0 17 ? * TUES,THUR,SAT 每週二、四、六下午五點
0 10,44 14 ? 3 WED 每年三月的星期三的下午2:10和2:44觸發 
0 15 10 ? * MON-FRI 週一至週五的上午10:15觸發

0 0 23 L * ? 每月最後一天23點執行一次
0 15 10 L * ? 每月最後一日的上午10:15觸發 
0 15 10 ? * 6L 每月的最後一個星期五上午10:15觸發 

0 15 10 * * ? 2005 2005年的每天上午10:15觸發 
0 15 10 ? * 6L 2002-2005 2002年至2005年的每月的最後一個星期五上午10:15觸發 
0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發