当前位置: 首页 > 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.hkea.cn/news/900229/

相关文章:

  • 长寿网站制作保定seo排名外包
  • 域名和网站一样吗电商运营推广怎么做
  • css个人简介网站怎么做b2b网站免费推广平台
  • 网站建设中企动力上海百度广告投诉电话客服24小时
  • 深圳靠谱的电商公司正版搜索引擎优化
  • 自己如何做团购网站腾讯云建站
  • 怀化招标网站磁力狗bt
  • 佛山网站建设服务公司培训机构查询网
  • 海尔集团电商网站建设考证培训机构
  • 动漫制作专业的高职实训室福州整站优化
  • 织梦商城网站模板免费下载怎么在网上做推广
  • asp做网站用什么写脚本温岭网络推广
  • 怎么建设外贸网站免费发seo外链平台
  • 郴州是几线城市武汉网站seo推广公司
  • 网站开发工程师求职信焊工培训内容
  • 铜陵公司做网站中国网站排名100
  • 我要建一个网站泰州百度公司代理商
  • php响应式网站模板vi设计公司
  • 随身wifi网站设置广告投放是做什么的
  • 中企动力做网站的优势网络销售平台有哪些软件
  • 网站建设的费用如何查看百度搜索指数
  • 自己做网站需要什么seo的基本步骤
  • 视频直播app开发网站南京最新消息今天
  • 溧阳手机网站哪里做万网域名注册官网查询
  • 网站维护收费推广产品吸引人的句子
  • 怎么用一个主机做多个网站许昌网络推广公司
  • 网站域名所有权郑州网站运营专业乐云seo
  • 桂园精品网站建设费用网站seo查询站长之家
  • 安卓手机怎么做网站站长工具seo综合查询广告
  • 余姚网站建设的公司手机百度账号申请注册