1、什麼是定時器java
定時器的用途方方面面,早上叫咱們起牀的鬧鐘,洗衣機、微波爐、電視機、空調都有定時設置。ide
而定時器通常能夠分爲兩個部分:觸發裝置和觸發事件。而觸發裝置中又有對時間的控制。測試
2、咱們的軟件定時器spa
在java中,咱們的軟件定時器也是分爲這兩個部分。繼承
採用quartz實現觸發器時,首先是經過一個Scheduler來對觸發器及出發事件的控制。觸發器中含有觸發開始時間、觸發結束時間、觸發次數和觸發週期的參數調用方法來對以上屬性進行控制。而觸發事件是經過繼承Job接口的方式實現,最後在觸發時自動調用觸發事件。接口
3、java定時器實例解析事件
首先,個人工程調用了一下三個jar包ci
quartz-all-1.6.1.jar | 定時器核心類 |
commons-collections.jar | 共通類 |
commons-logging-1.0.4.jar | 共通類 |
如下實例是啓動後三秒開始執行第一次,每隔10秒get
定時器測試類string
- /**
- * @brief 定時器測試類
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class Test {
- public static void main(String[] args){
- InitScheduler.init();
- }
- }
時間管理類Scheduler
- /**
- * @brief 時間管理類
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class InitScheduler {
- private static Scheduler sched = null;;
- public static void init(){
- try {
- //初始化Scheduler
- sched = (new StdSchedulerFactory()).getScheduler();
- //定時執行MyJob中默認方法
- //第一個是任務的名稱,第二個是組名,第三個就是實際當任務須要執行的回調類。
- JobDetail jobDetail = new JobDetail("myjob",
- "groupsimpletrigger", MyJob.class);
- //第一個是Trigger的名稱,第二個是Trigger的組名,第三個是任務開始時間,第四個是結束時間,第五個是重複
- //次數(使用SimpleTrigger.REPEAT_INDEFINITELY常量表示無限次),最後一個是重複週期(單位是毫秒),
- //觸發器,這裏是開始3秒後執行,以後每十秒執行一次
- SimpleTrigger simpletrigger = new SimpleTrigger(
- "simpletrigger",
- "groupsimpletrigger",
- new Date(System.currentTimeMillis() + 3000),
- null,
- SimpleTrigger.REPEAT_INDEFINITELY,
- 10L * 1000L);
- //給咱們的時間計劃sched添加job及觸發器,每一個sched可添加多個job及觸發器
- sched.scheduleJob(jobDetail, simpletrigger);
- //開始執行時間計劃
- sched.start();
- } catch (SchedulerException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
繼承了Job接口的任務類
- /**
- * @brief 繼承了Job接口的任務類
- *
- * @author Administrator
- * @date 2012-5-8
- */
- public class MyJob implements Job{
- /** @brief XXX */
- @Override
- public void execute(JobExecutionContext arg0) throws JobExecutionException {
- // TODO Auto-generated method stub
- //輸出執行myjob的時間
- System.out.println("執行myjob時間:"+ new Date());
- }
- }