任务调度ScheduleExecutorService学习心得
来源:互联网 发布:.blog域名 编辑:程序博客网 时间:2024/06/03 07:33
在javaSE中有Timer类和ScheduledExecutorService 类,timer类是基于绝对时间,ScheduledExecutorService 是基于相对时间,绝对时间有个缺陷,如果用户修改了电脑的系统时间,可能会对程序造成影响,而相对时间不会发生这种问题,timer类是基于轮询机制,ScheduledExecutorService 是基于多线程,所以他们的内部结构也不相同。这里就不多讲了,有兴趣的可以百度。
public class FirstClass {
private static SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");public static void main(String[] args) {
first();
seconds();
}
static void first(){
ScheduledExecutorService st = Executors.newScheduledThreadPool(1);
st.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("time: "+format.format(new Date()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
}
static void seconds(){
ScheduledExecutorService st = Executors.newScheduledThreadPool(1);
st.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
System.out.println("time: "+format.format(new Date()));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
}
}
scheduleAtFixedRate运行结果:
time: 2017-11-21 09:50:12:421
time: 2017-11-21 09:50:17:421
time: 2017-11-21 09:50:22:420
time: 2017-11-21 09:50:27:421
time: 2017-11-21 09:50:32:421
scheduleWithFixedDelay运行结果:
time: 2017-11-21 09:52:06:554
time: 2017-11-21 09:52:12:558
time: 2017-11-21 09:52:18:559
time: 2017-11-21 09:52:24:565
time: 2017-11-21 09:52:30:566
由第一个运行的结果可知scheduleAtFixedRate无论线程内部是否有等待事件,都不影响第二次执行,而scheduleWithFixedDelay会等待第一次线程结束才进行第二次线程,如果第一次发生了异常将会影响到后续的运行,所以如果使用scheduleWithFixedDelay需要对异常和可能发生的时间做出处理。
- 任务调度ScheduleExecutorService学习心得
- ScheduleExecutorService
- ScheduleExecutorService
- android ScheduleExecutorService定时周期执行指定任务
- android ScheduleExecutorService定时周期执行指定任务
- ScheduleExecutorService接口和spring控制定时任务的理解
- 调度任务
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- 任务调度
- vue elementUI webpack 前端坑;
- 使用Python完美管理和调度你的多个任务
- 关于Snmp-Trap日志报文分析
- linux/centos 安装mysql
- Android监听home键的动作
- 任务调度ScheduleExecutorService学习心得
- WeixiStyle Yii2.0 视频教程
- CDH平台搭建步骤
- Hive的连接(join)方案
- openstack之 glance_image和instances存储目录解析
- 两数之和
- f8app在window安装教程
- 20171121
- NTP服务设置