说明:如果您有任何疑问或想咨询其他业务请拨打电话 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