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

一步一步网站建设教程免费创建个人博客网站

一步一步网站建设教程,免费创建个人博客网站,网站编程课程设计心得体会,网站开发常用的语言Timer使用一个线程,一个小根堆。线程执行根上的任务,小根堆会根据执行时间戳重新调整,根上的任务是下一个执行的任务。 DelayedQueue维护一个优先级队列,本质也是一个数组方式的堆。任务生成时也有时间戳,只提供存储。…

Timer使用一个线程,一个小根堆。线程执行根上的任务,小根堆会根据执行时间戳重新调整,根上的任务是下一个执行的任务。

DelayedQueue维护一个优先级队列,本质也是一个数组方式的堆。任务生成时也有时间戳,只提供存储。

ScheduledThreadPoolExecutor的存储是DelayedWorkQueue,维护一个优先级队列,本质也是一个数组方式的堆。也是任务有对应的时间戳,执行后重新设置任务执行时间,但是是多线程方式执行。

Spring的@Scheduled底层使用的是ScheduledThreadPoolExecutor。默认单线程,所以同一个时间的任务会排序执行,随机的排序,如果维持单线程,多个节点执行,即使加了分布式锁也可能会重复执行,可以增加线程数量,可以使用多个scheduler。https://blog.csdn.net/liuxiao723846/article/details/90546619
@Scheduled(fixedRate = 51_000)是一个任务开始5秒后下一个任务执行。
@Scheduled(fixedDelay = 5
1_000)是一个任务结束5秒后下一个任务执行。

上面使用堆的方式,插入任务的效率是nlogn,logn是因为堆调整为新的小根堆时是logn。

Quartz使用一个调度器线程遍历所有任务当前是否到了执行时间,太慢。

Netty包里有HashedWheelTimer。时间轮在Dubbo定时重试,RocketMQ延时消息、XXL-Job任务调度中都有使用。
时间轮使用一个调度器线程看刻度,每个刻度对应一个列表存储此时应执行的任务,比起JDK,任务插入效率是1,比起Quartz,一个调度器线程不遍历所有任务,而是找到刻度,就找到了要执行的任务。
但是在时间刻度多,但任务数量少的情况下,遍历刻度反倒不如遍历任务,效率低,而且很多刻度上没有任务,还占用空间。
所以可以使用多维度的时间轮来减少刻度,比如秒级刻度,一天有86400个秒,使用这种,任务少时不合适。可以使用一个小时级刻度,加一个分钟级刻度,加一个秒级刻度。
还可以以应用方向为层级,构造垂直多层的时间轮,一层是一个应用方向,但调度时仍然是一个线程,类似于IO多路复用。

参考:http://it.taocms.org/01/100134.htm

http://www.ds6.com.cn/news/55212.html

相关文章:

  • 网站关键词布局seo关键词排名优化专业公司
  • 网站建设学多久百度竞价排名案例分析
  • 做宣传单用什么网站2023能用的磁力搜索引擎
  • 24小时自助下单网站网络优化工程师主要做什么
  • 做网站的是什么工作视频网站推广
  • 河北搭建营销型网站西安网站seo服务
  • wordpress怎么查看源代码百度优化
  • 那些网站是做金融行业产品的推广及宣传思路
  • 九亭 网站建设百度推广一个月多少钱
  • 玉田网站建设关键词优化包含
  • 南京快速建站公司网络营销广告
  • 淘宝上做网站的靠谱抖音推广渠道有哪些
  • 中堂镇仿做网站推广计划怎么做
  • 十堰网站开发济南网络seo公司
  • 通付盾 网站公司建设北京网络优化推广公司
  • 商城网站建设方案 2017武汉做网页推广公司
  • 网站建设便宜公司网络自动推广软件
  • 致设计网络优化工程师吃香吗
  • 网站怎么做付费项目浏览器大全网站
  • php企业网站开发论文百度广告运营
  • 汨罗做网站价格百度推广账号登录入口
  • 网站模板 瀑布流重庆百度开户
  • 长沙好的做网站品牌龙华线上推广
  • 如何创建网站平台的详细步骤seo查询站长工具
  • 网站做菠菜淄博seo公司
  • 口碑营销怎么做河南新站关键词排名优化外包
  • 网站建站查询热搜榜百度
  • 产品经理如何做p2p网站改版色盲能治好吗
  • 自媒体横行还有做网站福州网站seo
  • 安徽外贸网站google建站百度热搜榜在哪里看