首页天道酬勤java异步编程实战pdf(java实战项目推荐)

java异步编程实战pdf(java实战项目推荐)

admin 11-29 03:08 232次浏览

JAVA定时任务主要有两种,是Timer和ScheduledThreadPoolExecutor

Timer基于绝对时间,对系统时间敏感,ScheduledThreadPoolExecutor基于相对时间。定时器内部是单线程,而ScheduledThreadPoolExecutor内部是线程池,因此可以支持多个任务并发执行。

Timer常用API

ScheduledThreadPoolExecutor常用API

主要说说这两种怎么用。

Timer举例

shedule方法的执行结果如下,后续线程会一直延迟。

2018年10月8日星期一21:12:30科技委计时器开始计时.

2018年10月8日星期一21:12:35 CST时间到了!

2018年10月8日星期一21:12:39 CST时间到了!

如果使用scheduleAtFixedRate,如果执行延迟小于1s,将多执行几次,以弥补由于延迟而未达到的次数。

ScheduledThreadPoolExecutor举例

实施结果如下:

2018年10月8日星期一21:22:27科技委时间,时间:1064

2018年10月8日星期一21:22:31科技委时间,时间:5066

2018年10月8日星期一21:22:35科技委时间,时间:9066

同样,scheduleWithFixedDelay的执行原理与Timer的shedule方法相同。

Timer和 ScheduledThreadPoolExecutor选择

定时器的缺陷:

1.单线程2.qcdbmh如果一个任务出现异常,后续所有任务都不会再次执行。

建议在生产环境中使用ScheduledThreadPoolExecutor。当然,使用spring框架的计时任务更简单,原生Java计时可以帮助我们加深分析底层问题的能力。

如果您有任何建议或错误,请留言讨论。

DeepRust匹配:有更好的方法吗?C++构造析构赋值运算函数怎么应用雷士灯具管理系统jquery中子元素选择器和后代元素选择器有哪些区别
agenta第三章(分布式平台) 那就跟我rushB(rush的危害)
相关内容