加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

SpringBoot下使用定时任务的方式全揭秘

发布时间:2019-02-22 22:15:30 所属栏目:建站 来源:佚名
导读:本文旨在用普通的说话报告死板的常识 按时使命作为一种体系调治器材,在一些必要有按时功课的体系中应用普及,如每逢某个时刻点统计数据、在未来某个时候执行某些举措...按时使命在主流开拓说话均提供响应的API供开拓者挪用,在Java中,实现按时使命有许多
副问题[/!--empirenews.page--]

 SpringBoot下行使按时使命的方法全揭秘

本文旨在用普通的说话报告死板的常识

按时使命作为一种体系调治器材,在一些必要有按时功课的体系中应用普及,,如每逢某个时刻点统计数据、在未来某个时候执行某些举措...按时使命在主流开拓说话均提供响应的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. 线程实现

操作线程可以设定休眠时刻的方法可以实现简朴的按时使命逻辑。

  1. public static void main(String[] args){ 
  2.       //按时使命隔断时刻 
  3.       int sleepTime=2*1000; 
  4.       new Thread(new Runnable() { 
  5.           @Override 
  6.           public void run() { 
  7.               while (true){ 
  8.                   try { 
  9.                       System.out.println("Thread方法执行一次按时使命"); 
  10.                       //线程休眠规按时刻 
  11.                       Thread.sleep(sleepTime); 
  12.                   } catch (InterruptedException e) { 
  13.                       e.printStackTrace(); 
  14.                   } 
  15.               } 
  16.           } 
  17.       }).start(); 
  18.   } 

2. Timer类

Timer类应承调治一个TimerTask使命。行使这种方法可以让你的措施凭证某一个频度执行。

  1. public static void main(String[] args){ 
  2.        int sleepTime=2*1000; 
  3.        TimerTask timerTask = new TimerTask() { 
  4.            @Override 
  5.            public void run() { 
  6.                System.out.println("Timer方法执行一次按时使命"); 
  7.            } 
  8.        }; 
  9.        new Timer().schedule(timerTask,1,sleepTime); 
  10.    } 

3. ScheduledExecutorService类

ScheduledExecutorService,是基于线程池计划的按时使命类,每个调治使命城市分派到线程池中的一个线程去执行,也就是说,使命是并发执行,互不影响。
因此,基于ScheduledExecutorService类的按时使命类,归根到底也是基于线程的调治实现的。

  1. public static void main(String[] args){ 
  2.      int sleepTime=2*1000; 
  3.      ScheduledExecutorService scheduledExecutor = Executors.newSingleThreadScheduledExecutor(); 
  4.      scheduledExecutor.scheduleAtFixedRate( 
  5.              new Runnable() { 
  6.                  @Override 
  7.                  public void run() { 
  8.                      System.out.println("ScheduledExecutorService方法执行一次按时使命"); 
  9.                  } 
  10.              } 
  11.      ,1,sleepTime, TimeUnit.SECONDS); 
  12.  } 

4. 整合Quartz

Quartz是一个完全由Java编写的开源功课调治框架,为在 Java 应用措施中举办功课调治提供了简朴却强盛的机制,要领略它的行使方法,必要先领略它的几个焦点观念:

1)Job: 暗示一个事变,要执行的详细内容。此接口中只有一个要领,如下:

  1. void execute(JobExecutionContext context) 

2)JobDetail: 暗示一个详细的可执行的调治措施,Job 是这个可执行程调治措施所要执行的内容,其它 JobDetail 还包括了这个使命调治的方案和计策。

3)Trigger: 代表一个调治参数的设置,什么时辰去调。

4)Scheduler: 代表一个调治容器,一个调治容器中可以注册多个 JobDetail 和Trigger。当 Trigger 与 JobDetail 组合,就可以被 Scheduler 容器调治了。

有了这些观念之后,我们就可以把Quartz整合到我们的springboot项目中了。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读