定时器

Timer

import java.util.Timer;
import java.util.TimerTask;
/**
* @author Pickle
* @version V1.0
* @date 2024/3/12 15:06
*/
public class TimerDemo {
public static void main(String[] args) {
//Timer本身也是一个线程
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "执行了一次");
}
},3000,2000);
//Timer是单线程的,当处理多个任务时候,存在延时与设置定时器的时间有出入
//可能存在某个任务异常,导致后续任务无法正常执行
}
}

ScheduleExecutorService

ScheduleExecutorService是Jdk5引入的并发包,目的是弥补Timer的缺陷,内部使用了线程池。

import java.util.TimerTask;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* @author Pickle
* @version V1.0
* @date 2024/3/12 15:15
*/
public class ScheduleExecutorDemo {
public static void main(String[] args) {
final ScheduledExecutorService pool = Executors.newScheduledThreadPool(3);
pool.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "输出");
}
},0, 2, TimeUnit.SECONDS);
pool.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "输出");
}
}, 2, TimeUnit.SECONDS);
}
}
posted @   破忒头头  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示