当前位置: 首页 > news >正文

新乐市做网站上海嘉定

新乐市做网站,上海嘉定,企业工商查询,装修设计图包括哪些图纸ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池,主要有四种方式,具体可以看代码, 这里主要描述下 scheduleAtFixedRate : 除了第一次执行的时间,后面任务执行的时间 为 time MAX(任务执行时…

ScheduledThreadPoolExecutor 是在线程池的基础上 拓展的定时功能的线程池,主要有四种方式,具体可以看代码,
这里主要描述下

  • scheduleAtFixedRate : 除了第一次执行的时间,后面任务执行的时间 为 time = MAX(任务执行时间,每次等待时间) 取最大值
  • scheduleWithFixedDelay:除了第一次执行的时间,后面任务的时间为 任务执行时间+每次等待时间。
    在这里插入图片描述

使用案例

		// 创建一个定时任务线程池ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);// 延迟1S后执行executor.schedule(() -> {}, 1000, TimeUnit.MILLISECONDS);// 立马执行executor.execute(() -> {System.out.println("execute");});// 第一次延迟1S,之后每3S执行一次,如果任务时间超过3S,那么等任务执行后执行下一次任务executor.scheduleAtFixedRate(() -> {try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("at"+new Date());}, 1000, 3000, TimeUnit.MILLISECONDS);// 第一次延迟1S执行。任务执行完成后+3S 执行下一次任务executor.scheduleWithFixedDelay(() -> {try {TimeUnit.SECONDS.sleep(5);System.out.println("with"+new Date());} catch (InterruptedException e) {throw new RuntimeException(e);}},1000, 3000, TimeUnit.MILLISECONDS);

源码解析

其实主要就是把握ScheduledFutureTask 和 线程池的核心流程的类就可以。

ScheduledFutureTask

在这里插入图片描述
在这里插入图片描述

DelayedWorkQueue

本质是一个二叉树形式的堆结构,会将邻近执行时间的任务排在前面。

schedule 方法分析

整体的流程其实就是 封装定时任务,然后触发延迟执行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

delayedExecute

在这里插入图片描述
在这里插入图片描述

ScheduledFutureTask.run方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

流程图

这里来简单描述下整体的流程
1.先将任务封装成一个任务 ScheduledFutureTask, 根据线程池状态判断是否执行或者删除任务
2.将任务添加到延迟队列中
3.根据线程池配置 看是否创建线程执行任务。
4.运行的线程不断从延迟队列中获取任务执行。

其实本质就是利用线程池复用机制 + 延迟队列 实现定时任务。

在这里插入图片描述

总结

ScheduledThreadPoolExecutor和ThreadPoolExecutor的区别:

  • ThreadPoolExecutor每次addwoker就会将自己的Task传进新创建的woker中的线程执行,因此woker会第一时间执行当前Task,只有线程数超过了核心线程才会将任务放进队列里
  • ScheduledThreadPoolExecutor是直接入队列,并且创建woker时传到woker的是null,说明woker中的线程刚启动时并没有任务执行,只能通过getTask去队列里取任务,取任务时会判断是否到了执行时间,因此具有了延时执行的特性,并且task执行完了,会将当前任务重新放进堆里,并设置下次执行的时间。
http://www.yayakq.cn/news/991510/

相关文章:

  • 网站建动态密码是否收费租车公司网站模板
  • 国外自建站怎么样哪个网站可以查企业信息
  • 做海报的网站小白qq怎么开网店呢
  • 知名的咨询行业网站制作免费发布租房信息网站
  • 做网站赚钱 知乎wordpress社交分享国内
  • 两学一做 官方网站医院病房建设网站
  • 中合网络网站建设科技公司网站开发
  • 拓网手机版网站管理系统企业网站建设的重要性和必要性
  • 济南百度网站开发品牌推广理论有哪些
  • 青岛西海岸新区城市建设局网站获得网站管理员密码
  • 做网站一定需要服务器吗2345网址导航官网下载安装
  • 广西北海网站建设wordpress还是dede
  • 修改备案网站信息微信小程序怎么推广
  • 关闭站长工具seo综合查询百度建站平台官网
  • 怎么查看一个网站页面的seo优化情况成都做网站的公司
  • 广州大题小做考研网站深圳网站建设联华
  • 找i满洲做卖房广告不收费的网站如何查询网站已经提交备案
  • 网站description建网站开发语言对比
  • 网站开发的前台开发工具做区域县城招聘网站
  • 网站建设需求表模板设计一个网站开发方案
  • 网站建设文本湖南建设工程采购网站
  • 网站建设 小程序制作wordpress怎么分栏
  • 网络小白如何建立个人网站国家高新技术企业是什么意思
  • 滕州营销型网站做网站建设最好的公司是
  • 校园网站建设费用有哪些互联网公司
  • 关于做好全国网站建设百度贴吧的互动社区
  • 广东省住房和城乡建设网站抖音代运营收费详细价格模板
  • 毕设做系统与网站网站页面设计报价模板
  • 门户网站建设公司案例河南网站备案
  • 做童鞋的一些外贸网站上海的建设网站