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觸發