定時器怎么使用_第1頁
定時器怎么使用_第2頁
定時器怎么使用_第3頁
定時器怎么使用_第4頁
定時器怎么使用_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

定時器怎么使用java中定時器的簡單使用1.首先肯定是容器一啟動就要啟動定時器,所以我們可以選擇把定時器寫在一個監(jiān)聽器里,容器一啟動所以監(jiān)聽器也就跟著啟動,然后定時器就可以工作了。第一步,把自己寫的監(jiān)聽器加到web.xml中;第二步,寫一個監(jiān)聽器,實(shí)現(xiàn)ServletContextListener接口;第三步,寫一個定時器,繼承TimerTask,在復(fù)寫的run()方法里寫具體的業(yè)務(wù)邏輯。第四步,在自己的監(jiān)聽器里復(fù)寫的publicvoidcontextInitialized(ServletContextEventarg0){}這個方法里調(diào)用定時器的schedule方法。具體代碼如下:web.xml添加:1《!--用于補(bǔ)償認(rèn)證信息異常的數(shù)據(jù),用來啟動定時器,20170505--》2《listener》3《listener-class》com.dcits.app.servlet.MyTimerTaskListener《/listener-class》4《/listener》MyTimerTaskListener.javapackagecom.dcits.app.servlet;importjava.util.Calendar;importjava.util.Timer;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;/***@authorWeiyongle*@time2017-5-5下午2:05:32*/publicclassMyTimerTaskListenerimplementsServletContextListener{privateTimertimer=null;@OverridepublicvoidcontextDestroyed(ServletContextEventarg0){timer.cancel();}@OverridepublicvoidcontextInitialized(ServletContextEventarg0){System.out.println(“-----開始啟動定時器------”);CalendartwentyOne=Calendar.getInstance();twentyOne.set(Calendar.HOUR_OF_DAY,23);twentyOne.set(Calendar.MINUTE,0);twentyOne.set(Calendar.SECOND,0);timer=newTimer(true);//第一次是晚上23點(diǎn)執(zhí)行,間隔24小時執(zhí)行一次timer.schedule(newMyTimerTask(),twentyOne.getTime(),1000*60*60*24);/*System.out.println(“-----開始啟動定時器------”);CalendartwentyOne=Calendar.getInstance();twentyOne.set(Calendar.HOUR_OF_DAY,14);twentyOne.set(Calendar.MINUTE,47);twentyOne.set(Calendar.SECOND,0);timer=newTimer(true);timer.schedule(newMyTimerTask(),twentyOne.getTime(),1000*10);*/}}MyTimerTask.javapackagecom.dcits.app.servlet;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importjava.util.TimerTask;importorg.codehaus.jackson.JsonGenerationException;importorg.codehaus.jackson.map.JsonMappingException;/***定時器,用于補(bǔ)償認(rèn)證的時候沒有獲取到正常返回的那些數(shù)據(jù)*@authorWeiyongle*@time2017-5-5下午2:20:12*/publicclassMyTimerTaskextendsTimerTask{privatestaticStringBufferurl=newStringBuffer();@Overridepublicvoidrun(){//生產(chǎn)環(huán)境//url.append(“https://我是具體的ip地址/nmsypt/servlet/webServlet”);//生產(chǎn)環(huán)境url.append(“l(fā)ocalhost:8080/adp/servlet/webServlet”);//本地環(huán)境Map《String,Object》reqMap=newHashMap《String,Object》();//這里的map從數(shù)據(jù)庫里獲取對應(yīng)的數(shù)據(jù)不寫死就行了,先獲取map,在寫個for循環(huán)進(jìn)行循環(huán)就行了reqMap.put(“QYMC”,“丹同學(xué)的公司”);reqMap.put(“NSRSBH”,“158028307441234”);reqMap.put(“SJHM_FR”,);reqMap.put(“YZM”,“123456”);reqMap.put(“CWFZR”,“”);//reqMap.put(“ZJLX_DM_CW”,“”);//reqMap.put(“ZJHM_CW”,“”);//reqMap.put(“ZGRS”,“1234”);reqMap.put(“SQYY”,“”);//reqMap.put(“JRCPBM”,“00002”);reqMap.put(“XYDM”,“1”);reqMap.put(“XZQHDM”,“”);reqMap.put(“QYBM”,“QY17900000647001”);try{CompensateData.CompensateDatas(url.toString(),reqMap);System.out.println(“-----成功補(bǔ)償了一條認(rèn)證信息------”);}catch(JsonGenerationExceptione){e.printStackTrace();}catch(JsonMappingExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}}java當(dāng)中的定時器的4種使用方式對于開發(fā)游戲項(xiàng)目的同胞來說,Timer這個東西肯定不會陌生,今天對以前自己經(jīng)常使用的定時進(jìn)行了一番小小的總結(jié)!沒有寫具體實(shí)現(xiàn)的原理,只是列舉出了其中的四種比較常見的使用方法,相對而言,所以只要按照其所列舉的例子仿照即可!importjava.util.Calendar;importjava.util.Date;importjava.util.Timer;importjava.util.TimerTask;publicclassTimeTest{publicstaticvoidmain(String[]args){timer1();//timer2();//timer3();//timer4();}//第一種方法:設(shè)定指定任務(wù)task在指定時間time執(zhí)行schedule(TimerTasktask,Datetime)publicstaticvoidtimer1(){Timertimer=newTimer();timer.schedule(newTimerTask(){publicvoidrun(){System.out.println(“-------設(shè)定要指定任務(wù)--------”);}},2000);//設(shè)定指定的時間time,此處為2000毫秒}//第二種方法:設(shè)定指定任務(wù)task在指定延遲delay后進(jìn)行固定延遲peroid的執(zhí)行//schedule(TimerTasktask,longdelay,longperiod)publicstaticvoidtimer2(){Timertimer=newTimer();timer.schedule(newTimerTask(){publicvoidrun(){System.out.println(“-------設(shè)定要指定任務(wù)--------”);}},1000,5000);}//第三種方法:設(shè)定指定任務(wù)task在指定延遲delay后進(jìn)行固定頻率peroid的執(zhí)行。//scheduleAtFixedRate(TimerTasktask,longdelay,longperiod)publicstaticvoidtimer3(){Timertimer=newTimer();timer.scheduleAtFixedRate(newTimerTask(){publicvoidrun(){System.out.println(“-------設(shè)定要指定任務(wù)--------”);}},1000,2000);}//第四種方法:安排指定的任務(wù)task在指定的時間firstTime開始進(jìn)行重復(fù)的固定速率period執(zhí)行.//Timer.scheduleAtFixedRate(TimerTasktask,DatefirstTime,longperiod)publicstaticvoidtimer4(){Calendarcalendar=Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY,12);//控制時calendar.set(Calendar.MINUTE,0);//控制分calendar.set(Calendar.SECOND,0);//控制秒Datetime=calendar.getTime();//得出執(zhí)行任務(wù)的時間,此處為今天的12:00:00Timertimer=newTimer();timer.scheduleAtFixedRate(newTimerTask(){publicvoidrun(){System.out.println(“-------設(shè)定要指定任務(wù)--------”);}},time,1000*60*60*24);//這里設(shè)定將延時每天固定執(zhí)行}}Spring定時器應(yīng)該怎么用呢?在Java中呢,我們總是會有一些定時任務(wù),比如說:發(fā)郵件、短信推送消息;發(fā)公告、更新等等。那么Spring中的定時器應(yīng)該如何使用呢?接下來我們就來說說Spring定時器的使用方法。1.我們今天呢,是以springboot項(xiàng)目為基礎(chǔ)進(jìn)行的,大家如果不會使用Springboot的話可以先收藏一下,明天我會出一個Springboot項(xiàng)目的搭建文章。到時候你可以返回來再看這篇。因?yàn)閟pringboot實(shí)在是在方便了,用完之后就不想再回去寫配置文件了。。。2.首先呢,我們需要在啟動主程序中開啟定時,只需要在主類上增加@EnableScheduling即可,相信大家看字面意思也明白是什么意思啦!3.接下來就是寫我們的定時類,那么你就可以在定時類中完成自己的需求,無論是發(fā)送郵件、短信;還是公告、更新,他統(tǒng)統(tǒng)可以準(zhǔn)確無誤的幫你執(zhí)行,如果你有興趣,也可以寫一個搶購物品呀、車票呀什么的腳本。當(dāng)然說起來,寫腳本可能python更強(qiáng)一些。4.在以上代碼中呢,我使用@Autowired注入了testSe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論