副问题[/!--empirenews.page--]
本文旨在用普通的说话报告死板的常识
按时使命作为一种体系调治器材,在一些必要有按时功课的体系中应用普及,,如每逢某个时刻点统计数据、在未来某个时候执行某些举措...按时使命在主流开拓说话均提供响应的API供开拓者挪用,在Java中,实现按时使命有许多种方法,原生的方法实现一个完备按时使命必要由Timer、TimerTask两个类,Timer是按时器类,用来按打算开启靠山线程执行指定使命,TimerTask一个抽象类,它的子类代表一个可以被Timer打算的使命。除此之外,还可以用ScheduledExecutorService类可能行使第三方jar库Quartz,个中Quartz是一个优越的按时使命框架,成长至今已经很是成熟,甚至其后其他的按时使命框架的焦点头脑或底层大多源于Quartz。
springboot作为Java的一种开拓框架,在springboot项目中实现按时使命不只可以行使Java提供的原生方法,还可以行使springboot提供的按时使命API,下面,小编把Java原生和springboot全部的实现按时使命的方法做一个整合。
文章提要:
1、行使线程
2、行使Timer类
3、行使ScheduledExecutorService类
4、行使Quartz
5、行使spring的@Scheduled注解
6、cron表达式
1. 线程实现
操作线程可以设定休眠时刻的方法可以实现简朴的按时使命逻辑。
- public static void main(String[] args){
- //按时使命隔断时刻
- int sleepTime=2*1000;
- new Thread(new Runnable() {
- @Override
- public void run() {
- while (true){
- try {
- System.out.println("Thread方法执行一次按时使命");
- //线程休眠规按时刻
- Thread.sleep(sleepTime);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }).start();
- }
2. Timer类
Timer类应承调治一个TimerTask使命。行使这种方法可以让你的措施凭证某一个频度执行。
- public static void main(String[] args){
- int sleepTime=2*1000;
- TimerTask timerTask = new TimerTask() {
- @Override
- public void run() {
- System.out.println("Timer方法执行一次按时使命");
- }
- };
- new Timer().schedule(timerTask,1,sleepTime);
- }
3. ScheduledExecutorService类
ScheduledExecutorService,是基于线程池计划的按时使命类,每个调治使命城市分派到线程池中的一个线程去执行,也就是说,使命是并发执行,互不影响。
因此,基于ScheduledExecutorService类的按时使命类,归根到底也是基于线程的调治实现的。
- public static void main(String[] args){
- int sleepTime=2*1000;
- ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor();
- scheduledExecutor.scheduleAtFixedRate(
- new Runnable() {
- @Override
- public void run() {
- System.out.println("ScheduledExecutorService方法执行一次按时使命");
- }
- }
- ,1,sleepTime, TimeUnit.SECONDS);
- }
4. 整合Quartz
Quartz是一个完全由Java编写的开源功课调治框架,为在 Java 应用措施中举办功课调治提供了简朴却强盛的机制,要领略它的行使方法,必要先领略它的几个焦点观念:
1)Job: 暗示一个事变,要执行的详细内容。此接口中只有一个要领,如下:
- void execute(JobExecutionContext context)
2)JobDetail: 暗示一个详细的可执行的调治措施,Job 是这个可执行程调治措施所要执行的内容,其它 JobDetail 还包括了这个使命调治的方案和计策。
3)Trigger: 代表一个调治参数的设置,什么时辰去调。
4)Scheduler: 代表一个调治容器,一个调治容器中可以注册多个 JobDetail 和Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调治了。
有了这些观念之后,我们就可以把Quartz整合到我们的springboot项目中了。
(编辑:河北网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|