說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732
全網(wǎng)監(jiān)測海量數(shù)據(jù)按需發(fā)布監(jiān)測預(yù)警
實(shí)時(shí)把握輿情動(dòng)態(tài)精準(zhǔn)追溯信息源頭
在學(xué)習(xí)java的過程當(dāng)中,我們所需要學(xué)習(xí)的內(nèi)容是非常多的,其中經(jīng)常會(huì)看見了一個(gè)就是java定時(shí)任務(wù),你知道java定時(shí)任務(wù)是什么嗎?具體又是如何編寫的呢?接下來小編會(huì)做一個(gè)詳細(xì)的有關(guān)java定時(shí)任務(wù)的介紹,希望可以幫助到大家。
java定時(shí)任務(wù)——java定時(shí)任務(wù)是什么
在java中一個(gè)完整定時(shí)任務(wù)需要由Timer、TimerTask兩個(gè)類來配合完成。API中是這樣定義他們的,Timer:一種工具,線程用其安排以后在后臺線程中執(zhí)行的任務(wù)??砂才湃蝿?wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行。由TimerTask:Timer安排為一次執(zhí)行或重復(fù)執(zhí)行的任務(wù)。我們可以這樣理解Timer是一種定時(shí)器工具,用來在一個(gè)后臺線程計(jì)劃執(zhí)行指定任務(wù),而TimerTask一個(gè)抽象類,它的子類代表一個(gè)可以被Timer計(jì)劃的任務(wù)。
java兩個(gè)常見的定時(shí)任務(wù)介紹
1:java+Quartz實(shí)現(xiàn)定時(shí)任務(wù):
首先:導(dǎo)入quartz相關(guān)的jar包,這里我用的是maven構(gòu)建的項(xiàng)目,pom.xml文件導(dǎo)入如下:
org.quartz-scheduler
quartz
org.quartz-scheduler
quartz-jobs
定義要進(jìn)行定時(shí)任務(wù)類(該類實(shí)現(xiàn)了Quartz下的job類):
publicclassMyJobimplementsJob{
@Override
publicvoidexecute(JobExecutionContextarg0)throwsJobExecutionException{
//TODOAuto-generatedmethodstub
System.out.println(“開啟了定時(shí)任務(wù)”);
}
}
接下來要做的就是按照定時(shí)任務(wù)的固定步驟來做即可:1:定義調(diào)度器并且開啟2:定義任務(wù)器3:定義觸發(fā)器4注冊
具體代碼參考如下:
publicclassQuartzDemo{
publicvoidquartzTest()throwsInterruptedException{
try{
//獲取調(diào)度器
Schedulerscheduler=StdSchedulerFactory.getDefaultScheduler();
scheduler.start();
//創(chuàng)建任務(wù)器:定義任務(wù)細(xì)節(jié) JobDetailjobDetail=JobBuilder.newJob(MyJob.class).withIdentity(“job1″,”group1”).build(); ScheduleBuilderscheduleBuilder=SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever();
//定義觸發(fā)器 Triggertrigger=TriggerBuilder.newTrigger().withIdentity(“simpleTrigger”,”simpleTriggerGroup”)
.withSchedule(scheduleBuilder).startNow().build();
//將任務(wù)和觸發(fā)器注冊到調(diào)度器中
scheduler.scheduleJob(jobDetail,trigger);
Thread.sleep(1000*30);
//scheduler.shutdown();
}catch(SchedulerExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
2:spring+quartz定義定時(shí)任務(wù):
spring管理quartz有兩種方式:
1):自定義的任務(wù)類繼承特定的基類QuartzJobBean
2):自定義的任務(wù)類不繼承特定的基類完全就是一個(gè)普通的pojo:這種方式的實(shí)現(xiàn)主要是spring下的類:org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean
這里只講述第二種實(shí)現(xiàn)方式:
1:定義任務(wù)類:
publicclassQuartzJob{
privatevoidrunJob(){
System.out.println(“開啟定時(shí)任務(wù)!!”);
}
}
2:通過spring配置的方式來定義以下幾個(gè)步驟:1:定義調(diào)度器并且開啟2:定義任務(wù)器3:定義觸發(fā)器4注冊。
以上就是有關(guān)java定時(shí)任務(wù)的所有內(nèi)容,當(dāng)然,在java定時(shí)任務(wù)學(xué)習(xí)的過程當(dāng)中,也算著一些知識點(diǎn)只是小小的一部分,所以想要學(xué)好java定時(shí)任務(wù),那么還要去查詢更多與之有關(guān)的內(nèi)容,有需要的可以關(guān)注我們文軍營銷的官網(wǎng),這里還有更多精彩的內(nèi)容等著你。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732