Java开发常用技术

java定时器

2020-10-14  本文已影响0人  Sunshine__7b8f

java定时器

什么是Java定时器?
Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种:

通过Timer来实现定时任务

Timer 是来自 java.util.Timer

指定时间执行任务

 /**
  * @author spp
  * @date 2020-10-14 09:04
  **/
 public class TimerTest {
     public static void main(String[] args) {
         Timer timer = new Timer();
         timer.schedule(new TimerTask() {
             public void run() {
                 System.out.println("任务执行:" + System.currentTimeMillis());
             }
         }, 5000);
         System.out.println("任务开始:"+System.currentTimeMillis());

         //取消任务
         //timer.cancel();
     }
 }

结果

延后执行,随后以固定时间执行任务

 /**
  * @author spp
  * @date 2020-10-14 09:04
  **/
 public class TimerTest {
     public static void main(String[] args) {
         Timer timer = new Timer();
         //同scheduleAtFixedRate
         timer.schedule(new TimerTask() {
             public void run() {
                 System.out.println("任务执行:" + System.currentTimeMillis());
             }
         }, 5000,1000); //延迟5秒执行,随后每一秒执行一次
         System.out.println("任务开始:"+System.currentTimeMillis());

         //取消任务
         //timer.cancel();
     }
 }

结果

 任务开始:1602638067502
 任务执行:1602638072502
 任务执行:1602638073502
 任务执行:1602638074503
 任务执行:1602638075503
 任务执行:1602638076503
 任务执行:1602638077503

通过线程池ScheduledExecutorService

指定时间执行任务

 public static void main(String[] args) {
     //通过线程池ScheduledExecutorService
     ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
     scheduledExecutorService.schedule(()->{
         System.out.println("任务执行:" + System.currentTimeMillis());
     },1000, TimeUnit.MILLISECONDS); //参数说明:第一个执行的任务;第二个推迟的时间;第三个时间单位
     System.out.println("任务开始:"+System.currentTimeMillis());
 }

结果

 任务开始:1602638536832
 任务执行:1602638537833

执行固定定时任务

 public static void main(String[] args) {
     //通过线程池ScheduledExecutorService
     ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
     scheduledExecutorService.scheduleWithFixedDelay(()->{
         System.out.println("任务执行:" + System.currentTimeMillis());
     },2000, 1000,TimeUnit.MILLISECONDS); //参数说明:第一个执行的任务;第二个首次执行推迟的时间;第三个随后执行的推迟时间;第四个时间单位
     System.out.println("任务开始:"+System.currentTimeMillis());
 }

结果

 任务开始:1602638655640
 任务执行:1602638657641
 任务执行:1602638658643
 任务执行:1602638659645

定时器框架

有的时候Java代码定时任务也会让Linux上执行,也就是 Linux Cron

转自:

个人博客|程序猿首先森的个人博客​sppxpp.cn

上一篇 下一篇

猜你喜欢

热点阅读