什么是JDK1.5+版本引进的定时任务?布莱士·帕斯卡在的主要贡献是?

2023-02-15 08:22:52 来源:创视网

ScheduledExecutorService

ScheduledExecutorService是JDK1.5+版本引进的定时任务,该类位于java.util.concurrent并发包下。

ScheduledExecutorService是基于多线程的,设计的初衷是为了解决Timer单线程执行,多个任务之间会互相影响的问题。

它主要包含4个方法:

schedule(Runnable command,long delay,TimeUnit unit),带延迟时间的调度,只执行一次,调度之后可通过Future.get()阻塞直至任务执行完毕。

schedule(Callable callable,long delay,TimeUnit unit),带延迟时间的调度,只执行一次,调度之后可通过Future.get()阻塞直至任务执行完毕,并且可以获取执行结果。

scheduleAtFixedRate,表示以固定频率执行的任务,如果当前任务耗时较多,超过定时周期period,则当前任务结束后会立即执行。

scheduleWithFixedDelay,表示以固定延时执行任务,延时是相对当前任务结束为起点计算开始时间。

实现这种定时任务的具体代码如下:

public class ScheduleExecutorTest {

public static void main(String[] args) {

ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);

scheduledExecutorService.scheduleAtFixedRate(() -> {

System.out.println("doSomething");

},1000,1000, TimeUnit.MILLISECONDS);

}

}

调用ScheduledExecutorService类的scheduleAtFixedRate方法实现周期性任务,每隔1秒钟执行一次,每次延迟1秒再执行。

这种定时任务是阿里巴巴开发者规范中用来替代Timer类的方案,对于多线程执行周期性任务,是个不错的选择。

ScheduledExecutorService的优缺点:

优点:基于多线程的定时任务,多个任务之间不会相关影响,支持周期性的执行任务,并且带延迟功能。

缺点:不支持一些较复杂的定时规则。

布莱士·帕斯卡

布莱士·帕斯卡(Blaise Pascal,1623年6月19日~1662年8月19日),出生于多姆山省奥弗涅地区的克莱蒙费朗,是法国数学家、物理学家、哲学家、散文家。

16岁时发现著名的帕斯卡六边形定理:内接于一个二次曲线的六边形的三双对边的交点共线。17岁时写成《圆锥曲线论》(1640年),是研究德札尔格(Girard Desargues)射影几何工作心得的论文,包括上述定理。这些工作是自希腊阿波罗尼奥斯(Apollonius of Perga)以来圆锥曲线论的最大进步。1642年他设计并制作了一台能自动进位的加减法计算装置,被称为是世界上第一台数字计算器,为以后的计算机设计提供了基本原理。1654年他开始研究几个方面的数学问题,在无穷小分析上深入探讨了不可分原理,得出求不同曲线所围面积和重心的一般方法,并以积分学的原理解决了摆线问题,于1658年完成《论摆线》。

x 广告
x 广告

Copyright   2015-2022 财富赢家网版权所有  联系邮箱:920 891 263@qq.com

京ICP备2022016840号-48