时间轮java实现「建议收藏」

时间轮java实现「建议收藏」时间轮java实现一、java调度方法:前言在开发高性能服务器中,定时器总是不可或缺的。常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。之前用的定时器是基于最小堆的,如果程序中的定时器数量比较少,基于最小堆的定时器一般可以满足需求,且实现简单。Timer,ScheduledExecutorService时间复杂度O(log(n))因为它们使用的是最小堆的对排…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

时间轮java实现

一、java调度方法:

前言

在开发高性能服务器中,定时器总是不可或缺的。 常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。 之前用的定时器是基于最小堆的,如果程序中的定时器数量比较少,基于最小堆的定时器一般可以满足需求,且实现简单。

Timer,ScheduledExecutorService

时间复杂度 O(log(n)) 因为它们使用的 是 最小堆的对排序,每当有新任务的时候都需要堆堆进行插入, 堆排序插入的时间复杂度为 O(log(n))

Timer 的问题:

1、 如果任务执行时间过长,TimerTask会出现延迟执行的情况。比如,第一任务在1000ms执行了4000ms,第二个任务定时在2000ms开始执行。这里由于第一个任务要执行4000,所以第二个任务实际在5000ms开始执行。这是由于Timer是单线程,且顺序执行提交的任务

时间轮java实现「建议收藏」

 

2、 如果执行任务抛出异常,Timer是不会执行后面的任务的

时间轮java实现「建议收藏」

 

ScheduledExecutorService 解决了这些问题

任务一在1000ms执行,4000ms后结束。任务二在2000ms执行,4000ms后结束,任务二不会等任务一执行完成后执行,抛出异常也会执行任务二

时间轮java实现「建议收藏」

 

java调度算法时间复杂度

实现方式 加入任务 取消任务 运行任务
基于排序链表 O(n) O(1) O(1)
基于最小堆 O(lgn) O(1) O(1)

二、时间轮调度算法:

比java调度算法更高效的算法,时间复杂度为O(1)

1、如果执行任务抛出异常,会执行后面的任务的

时间轮java实现「建议收藏」

 

2、1s执行任务一,2s执行任务二

时间轮java实现「建议收藏」

 

3、1s执行多个任务

时间轮java实现「建议收藏」

 

算法对比

实现方式 加入任务 取消任务 运行任务
基于排序链表 O(n) O(1) O(1)
基于最小堆 O(lgn) O(1) O(1)
基于时间轮 O(1) O(1) O(1)

简单时间轮算法原理:

时间轮java实现「建议收藏」

 

项目下载地址:

https://download.csdn.net/download/a1229451567/10970874

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187211.html原文链接:https://javaforall.net

(0)
上一篇 2026年4月20日 上午10:22
下一篇 2026年4月20日 上午10:28


相关推荐

  • typora图床阿里云_织梦七牛云

    typora图床阿里云_织梦七牛云一、创建并上传文件到存储空间1.注册七牛账号,并且实名认证2.创建储存空间打开侧边栏,选择对象存储选择新建空间存储空间名称:按规则随便取存储区域:选择离靠近的地区访问控制:选择公开,否则

    2022年8月16日
    10
  • urlencode()与urldecode()

    urlencode()与urldecode()

    2021年10月21日
    46
  • 7 款最佳 AI 文本生成器:2025 年的热门内容?

    7 款最佳 AI 文本生成器:2025 年的热门内容?

    2026年3月15日
    2
  • nginx反向代理服务器

    nginx反向代理服务器什么是反向代理 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 通常的代理服务器 只用于代理内部网络对 Internet 的连接请求 客户机必须指定代理服务器 并将本来要直接发送到 Web 服务器上的 http 请求发送到代理服务器中由代理服务器向 Internet 上的 web 服务器发起请求 最终达到客户机上网的目的 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 而反向代理 ReverseProxy 方式是指以代理服务器来接受 internet 上的连接请求 然后将

    2026年3月26日
    2
  • MCS:多元随机变量——多项式分布

    MCS:多元随机变量——多项式分布二项分布的典型例子是扔硬币 把二项分布公式推广至多种状态 就得到了多项分布 比如扔骰子

    2026年3月17日
    2
  • pycharm安装TensorFlow的体会

    pycharm安装TensorFlow的体会本方法无需下载 anaconda1 官网安装 python 编译器 需 3 7 以上 2 官网安装 pycharm 配置环境 3 TensorFlow 安装时的方法 1 pycharm 的界面 file settings project xx pythoninterp 有一个加号 availablepac 的地方可以搜索 TensorFlow 下载问题 会加载超时 Readtimedout 2 Windows 键 R 搜索 cmda 直接 pipinstallte

    2026年3月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号