java中定時器的簡單使用

  

 1.首先確定是容器一啓動就要啓動定時器,因此咱們能夠選擇把定時器寫在一個監聽器裏,容器一啓動因此監聽器也就跟着啓動,而後定時器就能夠工做了。java

第一步,把本身寫的監聽器加到web.xml中;web

第二步,寫一個監聽器,實現ServletContextListener接口;數據庫

第三步,寫一個定時器,繼承TimerTask,在複寫的run()方法裏寫具體的業務邏輯。app

第四步,在本身的監聽器裏複寫的ide

public void contextInitialized(ServletContextEvent arg0){url

}spa

這個方法裏調用定時器的schedule方法。code

具體代碼以下:xml

web.xml添加:blog

1 <!-- 用於補償認證信息異常的數據,用來啓動定時器,20170505 -->
2     <listener>
3         <listener-class>com.dcits.app.servlet.MyTimerTaskListener</listener-class>
4     </listener>

MyTimerTaskListener.java

 1 package com.dcits.app.servlet;
 2 
 3 import java.util.Calendar;
 4 import java.util.Timer;
 5 
 6 import javax.servlet.ServletContextEvent;
 7 import javax.servlet.ServletContextListener;
 8 /**
 9  * @author Weiyongle
10  * @time 2017-5-5 下午2:05:32
11  */
12 public class MyTimerTaskListener implements ServletContextListener {
13     private Timer timer = null;
14     @Override
15     public void contextDestroyed(ServletContextEvent arg0) {
16         timer.cancel();
17     }
18 
19     @Override
20     public void contextInitialized(ServletContextEvent arg0) {
21         System.out.println("-----開始啓動定時器------");
22         Calendar twentyOne = Calendar.getInstance();
23         twentyOne.set(Calendar.HOUR_OF_DAY, 23);
24         twentyOne.set(Calendar.MINUTE, 0);
25         twentyOne.set(Calendar.SECOND, 0);
26         timer = new Timer(true);
27         //第一次是晚上23點執行,間隔24小時執行一次
28         timer.schedule(new MyTimerTask(), twentyOne.getTime(), 1000*60*60*24);
29         
30         
31         /*System.out.println("-----開始啓動定時器------");
32         Calendar twentyOne = Calendar.getInstance();
33         twentyOne.set(Calendar.HOUR_OF_DAY, 14);
34         twentyOne.set(Calendar.MINUTE, 47);
35         twentyOne.set(Calendar.SECOND, 0);
36         timer = new Timer(true);
37         timer.schedule(new MyTimerTask(), twentyOne.getTime(), 1000*10);*/
38     }
39     
40 }

MyTimerTask.java

 1 package com.dcits.app.servlet;
 2 
 3 import java.io.IOException;
 4 import java.util.HashMap;
 5 import java.util.Map;
 6 import java.util.TimerTask;
 7 
 8 import org.codehaus.jackson.JsonGenerationException;
 9 import org.codehaus.jackson.map.JsonMappingException;
10 /**
11  * 定時器,用於補償認證的時候沒有獲取到正常返回的那些數據
12  * @author Weiyongle
13  * @time 2017-5-5 下午2:20:12
14  */
15 public class MyTimerTask extends TimerTask{
16     private static StringBuffer url = new StringBuffer();
17     @Override
18     public void run() {
19         //生產環境
20 //        url.append("https://我是具體的ip地址/nmsypt/servlet/webServlet");//生產環境
21         url.append("http://localhost:8080/adp/servlet/webServlet");//本地環境
22         Map<String,Object> reqMap = new HashMap<String,Object>();
23         //這裏的map從數據庫裏獲取對應的數據不寫死就好了,先獲取map,在寫個for循環進行循環就好了
24         reqMap.put("QYMC","丹同窗的公司");
25         reqMap.put("NSRSBH","158028307441234");
26         reqMap.put("SJHM_FR","15802830744");
27         reqMap.put("YZM","123456");
28         reqMap.put("CWFZR","");//
29         reqMap.put("ZJLX_DM_CW","");//
30         reqMap.put("ZJHM_CW","");//
31         reqMap.put("ZGRS","1234");
32         reqMap.put("SQYY","");//
33         reqMap.put("JRCPBM","00002");
34         reqMap.put("XYDM","1");
35         reqMap.put("XZQHDM","");
36         reqMap.put("QYBM","QY17900000647001");
37         try {
38             CompensateData.CompensateDatas(url.toString(), reqMap);
39             System.out.println("-----成功補償了一條認證信息------");
40         } catch (JsonGenerationException e) {
41             e.printStackTrace();
42         } catch (JsonMappingException e) {
43             e.printStackTrace();
44         } catch (IOException e) {
45             e.printStackTrace();
46         }
47     }
48 
49 }
相關文章
相關標籤/搜索