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