Java定时器实现方式

Java定时方式:

一、让线程sleep(不再赘述)

二、用Timer和TimerTask,比上一种方式的好处有:

  1. 当启动和去取消任务时可以控制
  2. 第一次执行任务时可以指定你想要的delay时间
Timer timer = new Timer(); // Timer是单线程的
long delay = 0;
long intervalPeriod = 2000;
TimerTask task = new TimerTask(){
    @Override
    public void run() {
        System.out.println("TimerTask执行...");
        timer.cancel(); // 取消定时器
    }
};
timer.scheduleAtFixedRate(task,0,intervalPeriod); // 0表示一开始就执行,也可以使用Date指定开始时间

三、 用ScheduledExecutorService是从的java.util.concurrent里,做为并发工具类被引进的,相比于上两个方法,它有以下好处:

  1. 相比于Timer的单线程,它是通过线程池的方式来执行任务的
  2. 提供了良好的约定,以便设定执行的时间间隔
ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
Runnable run = () -> {
    System.out.println("ScheduledExecutorService线程池执行定时任务...");
    service.shutdown(); // 销毁线程池
};
service.scheduleAtFixedRate(run,0,2, TimeUnit.SECONDS); // 一开始就执行,两秒为一周期
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值