java定时任务指定时间执行,Java手动调用定时任务

  java定时任务指定时间执行,Java手动调用定时任务

  

  java如何定时执行一个方法

  爪哇岛实现定时功能有多种方式,下面介绍3种:

  1、创建一个线程.

  导入Java。util。日期;

  公共类ThreadTest {

  公共静态void main(String[] args) {

  //设置执行周期

  最终长时间间隔=3000;

  Runnable Runnable=new Runnable(){

  公共无效运行(){

  while (true) {

  System.out.println(任务运行. 新日期());

  尝试{

  线程.睡眠(时间间隔);

  } catch (InterruptedException e) {

  e。printstacktrace();

  }

  }

  }

  };

  螺纹螺纹=新线程(runnable);

  线程。start();

  }

  }2、使用 JDK 自带的 API Timer 以及 TaskTimer。

  这种方式和第一种简单粗暴的方式有什么区别呢,主要体现在使用应用程序接口可以在指定的时间开始启动任务,可以延期执行首次任务,同样也看可以设置一定的时间间隔,但是原理是是一样的,后台还是启动了一个线程,应该说是只有一个线程在执行任务,不管我们启动的工作有几个。所以这也会有问题,比方说一个一个任务没有执行完成,另一个任务就开始执行了,可能会发生并发问题。还有若是一个任务中报错,则线程就会被停止。

  导入Java。文字。简单的日期格式;

  导入Java。util。日历;

  导入Java。util。日期;

  导入Java。util。计时器;

  导入Java。util。timertask

  公共类我的任务扩展了TimerTask{

  私有字符串名称;

  公共我的任务(字符串名称){

  this.name=name

  }

  公共字符串getName() {

  返回名称;

  }

  公共void集合名称(字符串名){

  this.name=name

  }

  @覆盖

  公共无效运行(){

  简单日期格式SF=新建简单日期格式( yyyy-MM-DD HH:MM:ss );

  字符串格式=SF。format(new Date());

  System.out.println(exec MyTask.当前时间为:格式);

  System.out.println(this.name 正在执行!SF。format(new Date());

  }

  公共静态void main(String[] args) {

  Timer Timer=new Timer();

  TimerTask任务1=新建我的任务(任务1 );

  TimerTask任务2=新建我的任务(任务2 );

  日历日历1=日历。getinstance();

  calendar1.add(日历。第二,3);

  日历日历2=日历。getinstance();

  calendar2.add(日历。第二,5);

  简单日期格式SF=新建简单日期格式( yyyy-MM-DD HH:MM:ss );

  字符串格式=SF。format(new Date());

  System.out.println(当前时间为:格式);

  timer.schedule(task1,calendar1.getTime(),3000 l);

  timer.schedule(task2,calendar2.getTime(),3000 l);

  }

  }其实在计时器中,封装了一个工作的队列和时间的线程对象,我们自定义的工作的引用会放在队列中等待执行。

  大致是这么一个关系计时器-计时器线程-任务队列-我的任务-运行当然最终执行的方法肯定是我们自定义任务中的奔跑方法。因为我们自定义的任务已经继承了时间任务,而这个类已经实现了可追捕的接口。

  3、使用ScheduledExecutorService

  ScheduledExecutorService是做为并发工具类被引进的,这是最理想的定时任务实现方式。

  1.相比于计时器的单线程,它是通过线程池的方式来执行任务的。

  2.可以很灵活的去设定第一次执行任务耽搁时间。

  3.提供了良好的约定,以便设定执行的时间间隔。

  导入Java。util。日期;

  导入Java。util。并发。遗嘱执行人;

  导入Java。util。并发。scheduledexecutorservice

  导入Java。util。并发。时间单位;

  公共类qwe {

  公共静态void main(String[] args) {

  //新建定时任务

  Runnable Runnable=new Runnable(){

  //运行方法中是定时执行的操作

  公共无效运行(){

  system . out . println(new Date());

  }

  };

  ScheduledExecutorService service=executors . newsinglethreadscheduledexecutor();

  /*

  *参数1:命令:执行线程

  *参数2: initialDelay:初始化延迟

  *参数3: period:两次开始执行之间的最小间隔。

  *参数4:单位:计时单位

  */

  service . scheduleatfixedrate(runnable,0,60,TimeUnit。秒);

  }

  }我们,大量免费的入门Java教程,欢迎在线学习!这就是java如何有规律地执行任务的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: