当前位置:首页 > 天道酬勤 > 正文内容

Java中的线程池(java线程池工具类)

张世龙2021年12月21日 10:20天道酬勤1240

官方微信:动力节点Java学院

一、前言

前面已经介绍了Java的线程池ThreadPoolExecutor的原理,ThreadPoolExecutor是Executors的一部分功能,其次是实现另一部分功能ScheduledThreadPoolExecutor 后者是可以在一定延迟时或定时进行任务调度的线程池

二、类图结构

Executors实际上是一个工具类,有许多静态方法根据用户的选择返回不同的线程池实例。

ScheduledThreadPoolExecutor继承了ThreadPoolExecutor,实现了ScheduledExecutorService接口。 关于ThreadPoolExecutor的介绍,请参照以下内容。

3558 WWW .建校.com/p/3cc 67876375 f

线程池队列是延迟工作队列,针对延迟队列进行了优化。 有关延迟队列的信息,请访问http://www.Jian Shu.com/p/2659 EB 72134 b

ScheduledFutureTask是阻止队列的元素,用于修饰任务。

构造函数:

//改造后的delayqueue .三、使用一例

//任务之间按一定的时间间隔运行,延迟1s后开始执行任务,完成任务后按间隔2s再次运行,完成任务后按间隔2s再次运行,3、依次往返源代码分析

3.1调度(可重复命令、长延迟、时间单元)方法

公共调度功能? shedule(runnablecommand,long delay,上面做的首先是runnable装饰成delay队列所需格式的元素,然后将元素添加到块队列。 然后,线程池线程从块队列获取并处理超时的元素任务。 让我们看看队列元素是如何实现的。

//r是被修饰的任务,result=null,ns是当前时刻加上延迟时间后的调度函数(runnable r,V result,长ns ) super,result ); this.time=ns; this .期间=0; this.sequence编号=sequencer.getandincrement (; 请参阅http://www.Jian Shu.com/p/49541 d 720 D5 B,以取得有关未来任务的资讯

修饰后,将当前任务修饰为delay队列所需的元素。 让我们来看看元素的两个重要方法。

有效期限的计算

//元素过期的算法、装饰后的时间-当前时间为即将过期的剩余时间publiclonggetdelay (timeunitunit ) returnunit.convert ) time-now、time

公共比较对象(延迟其他)其他==其他) /比较对象(比较对象)可伸缩性、

长期延迟,

时间单元(和调度)可重新启用命令、长延迟、时间单元)类似。

compareTo的作用是在向dealy队列添加元素时进行比较,从而调整堆,使最早过期的元素位于队列的开头。 所以,无论何时向队列中添加元素,位于队伍最前面的都是过期的元素。

3.2排程延迟(可重新命令、长初始延迟、长延迟、时间单元)。

计划:相邻任务之间的时间固定

公共调度功能? 将schedulewithfixeddelay (runnable command、long initialDelay、long delay和任务添加到队列后,工作线程将从队列中检索并删除过期的元素,然后删除run方法因此,ScheduledFutureTask的run方法为预定的公共语音run ()//仅专用语音设置持续时间) ) {长p=期间; if ) p0 )总结:定时调度首先从队列中获取任务并执行,然后重置任务时间,使任务排队实现。

如果任务的执行时间比delay时间长,则在任务完成后的delay时间后调用两次任务时,不会同时执行同一任务。

3.3计划日期(可重新命令、长初始延迟、长期间、时间单元)。

时间表:对开始时间点的固定频率调用

公共调度功能? sheduleatfixedrate (可恢复命令,长初始延迟,长周期,专用语音持续时间) {长p=周期;//期间=延迟; 总结:相对于上述delay,rate方式的执行规则是时间为initdelday n*period; 单击开始任务。 但是,如果当前任务尚未运行,请在运行当前任务之后再运行该任务。

四、总结

调度线程池主要用于计时器和延迟一定时间执行任务。 由于内部使用优化的DelayQueue实现,并且有使用队列实现计时器、进出队列调整堆等操作,因此计时非常不准确。

自助式编程网络if eve.com

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26248.html

标签: 线程池
分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。