java定时任务接口ScheduledExecutorService

本文介绍了Java SE 5中引入的ScheduledExecutorService,一种基于线程池设计的理想定时任务实现方式。对比Timer,它具备更灵活的延迟时间和周期设定,以及更好的并发性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ScheduledExecutorService是从Java SE 5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。

ScheduledExecutorService,是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。

需要注意,只有当调度任务来的时候,ScheduledExecutorService才会真正启动一个线程,其余时间ScheduledExecutorService都是出于轮询任务的状态。

好处:

1.相比于Timer的单线程,它是通过线程池的方式来执行任务的2.可以很灵活的去设定第一次执行任务delay时间3.提供了良好的约定,以便设定执行的时间间隔。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Test {
 public static void main(String[] args) {
  ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
  int beginTime = TimeUtil.unixTimeStamp();
  Runnable runnable = new Runnable() {
   public void run() {
    // 把run方法里的内容换成你要执行的内容
    int nowTime = TimeUtil.unixTimeStamp();
    System.out.println(nowTime);
    int howlong = nowTime - beginTime;
    //从当前时间开始执行,30秒后停止,关闭定时器
    if (howlong > 30) {
     service.shutdown();
    }
   }
  };

  // public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long
  // initialDelay, long period, TimeUnit unit);
  // command--执行的任务,initialDelay--延迟开始,period--间隔时间,unit--时间单位
  service.scheduleAtFixedRate(runnable, 0, 5, TimeUnit.SECONDS);
  
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值