• 2024-11-17解读 DelayQueue 源码:探究其精妙的设计架构与实现细节
    一、简介DelayQueue是JUC包(java.util.concurrent)为我们提供的延迟队列,用于实现延时任务比如订单下单15分钟未支付直接取消。它是BlockingQueue的一种,底层是一个基于PriorityQueue实现的一个无界队列,是线程安全的BlockingQueue的实现类DelayQueue 中存放的元素
  • 2024-10-22[转]【Java】DelayQueue 的延时任务实现
    来源:Kimi.ai 在Java中,DelayQueue是一个非常有用的工具,用于实现延迟任务。以下是一个使用示例,它展示了如何使用DelayQueue:基本使用示例:首先,你需要创建一个实现了 Delayed 接口的类。这个类需要实现 getDelay 方法,该方法返回延迟时间,以及 compareTo 方法,用于确定元素在
  • 2024-09-20BlockingQueue---DelayQueue
    总结一个无界阻塞队列;FIFO;只包含实现了Delayed接口的元素,每个元素都有一个延迟时间,在该延迟时间结束之前,该元素不会从队列中可用。一旦元素的延迟到期,它就可以被取出了,并且取出的顺序是按照延迟到期的时间先后进行的。通常用于实现定时任务调度、缓存过期等
  • 2024-09-09多线程篇(阻塞队列- DelayQueue)(持续更新迭代)
    目录一、简介二、基本原理四、代码示例简单定时调度任务多消费者定时调度任务得出结论四、应用场景一、简介DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到
  • 2024-08-29JDK延迟队列 DelayQueue
    DelayQueue是JDK提供的一个无界队列,我们可以看到,DelayQueue队列中的元素需要实现Delayed,它只提供了一个方法,就是获取过期时间。用户的订单生成以后,设置过期时间比如30分钟,放入定义好的DelayQueue,然后创建一个线程,在线程中通过while(true)不断的从DelayQueue中获取过期的数据。
  • 2024-08-25延迟任务(DelayQueue,JDK开发)
    DelayQueue为了确定用户提交的播放记录是否变化,我们需要将播放记录保存为一个延迟任务,等待超过一个提交周期(20s)后检查播放进度。那么延迟任务该如何实现呢?1.1.延迟任务方案延迟任务的实现方案有很多,常见的有四类:DelayQueueRedissonMQ时间轮原理JDK自带延迟
  • 2024-08-21时间轮算法理解、Kafka实现
    概述TimingWheel,时间轮,简单理解就是一种用来存储若干个定时任务的环状队列(或数组),工作原理和钟表的表盘类似。关于环形队列,请参考环形队列。时间轮由两个部分组成,一个环状数组,一个遍历环状数组的指针。首先定义一个固定长度的环状数组,队列中的每一个元素代表一个时间格(可以精确
  • 2024-08-16DelayQueue 延迟队列使用
    一、DelayQueue是什么DelayQueue是一个无界的BlockingQueue,用于放置实现了Delayed接口的对象,其中的对象只能在其到期时才能从队列中取走。这种队列是有序的,即队头对象的延迟到期时间最长。注意:不能将null元素放置到这种队列中。二、DelayQueue能做什么1.淘宝订单业务:下
  • 2024-04-18队列
    队列目录队列LinkedBlockingQueue阻塞队列SynchronousQueue交换队列DelayQueue延时队列ArrayBlockingQueue有界循环队列常见面试题LinkedBlockingQueue阻塞队列新增操作add队列满的时候抛出异常offer队列满的时候返回false查看并删除remove队列空的时候抛出异常
  • 2023-11-14过期监听实现定时任务的反面教材
    一、场景    在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作。    像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内,那他们是怎么实现的呢?    一般实现方法有几种: 使用RocketMQ、RabbitM
  • 2023-10-10阻塞队列
    什么是阻塞队列阻塞队列是一种特殊的队列,它支持线程安全并发操作的同时提供了阻塞操作功能。在阻塞队列中,当队列为空时,从队列中取元素的操作将被阻塞,而当队列已满时,往队列中放元素的操作也会被阻塞。阻塞队列的应用场景阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加
  • 2023-07-09延迟任务【黑马头条 - day05】
    一、相关介绍定时任务:由固定周期的,有明确的触发时间延迟任务:没有固定的开始时间,它常常是由一个事件触发的,而在这个事件触发之后的一段时间内触发另一个事件,任务可以立即执行,也可以延迟。 二、延迟任务的应用场景 三、技术对比【DelayQueue】基于JVMJDK自
  • 2023-04-09【Java 并发】【十】【JUC数据结构】【五】DelayQueue延迟阻塞队列原理
    1 前言前两节我们看了BlockingQueue阻塞队列的两个子类,LinkedBlockingQueue、ArrayBlockingQueue,它们都是使用了ReentrantLock、Condition的来实现的,在进行插入操作、拉取数据操作之前为了并发安全都需要进行加锁;然后插入时候在容量满的时候发现没有空间了,这时候调用Condition.
  • 2023-02-20Java DelayQueue包装类
    publicclassDelayQueueWrapper<T>{privateTimeUnittimeUnit;privatefinalLongcapacity;privatelongcurrentSize;privateDelayQueue<
  • 2023-01-10Java并发容器之DelayQueue源码分析
    一、简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。二、继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,De
  • 2022-12-08JUC12 java并发编程容器
    0.java容器类​​JAVA容器详解_诗酒趁年华527的博客​​Java容器详解-_情书-​​一文秒懂java容器大全-知乎​​Collection:List,Set,QueueMap:2.java并发容器
  • 2022-11-30DelayQueue的简单介绍
    DelayQueue按照延迟时间从小到大出队列的队列,延迟时间表示的是未来将要执行的时间减去当前的时间,对于加入DelayQueue的元素,需要实现Delayed接口  当getDelay()的返回
  • 2022-11-12定时任务 & 定时线程池
    定时线程池使用场景:1.分布式锁-redis2.springCloud-服务注册与发现中心ScheduledThreadPoolExecutor它用来处理延时任务或定时任务。   它接收Schduled
  • 2022-11-02本地延迟队列
    本地延迟队列DelayQueue是无界的特殊注意:放入DelayQueue队列中的数据必须实现Delay接口,可以通过指定方法获取到是否到执行时间及比较运算逻辑1.定义本地延迟队列@Sl
  • 2022-10-12DelayQueue详解
    DelayQueue介绍【1】DelayQueue是一个支持延时获取元素的阻塞队列,内部采用优先队列PriorityQueue存储元素,同时元素必须实现Delayed接口;在创建元素时可以指定多
  • 2022-09-22CTO 说了:谁再用 Redis 过期监听实现定时任务,立马滚蛋!
    作者:Finley来源:https://www.cnblogs.com/Finley/p/16395466.html前言日前拜读阿牛老师的大作《领导:谁再用定时任务实现关闭订单,立马滚蛋!》发现其方案有若干瑕疵,特此抛
  • 2022-08-18完整实现-通过DelayQueue实现延时任务
    实现延时任务有很多的方法,网上关于延时任务的实现的文章已经不少了。比如:实现延时任务的10种方法等等。但是这些文章基本上都是将方法大概的列举一下,给出部分示例代码,对于