队列对象
使用 delayQueue + ConcurrentHashMap 实现延迟+唯一队列
具体代码如下:
队列使用/测试
测试代码
public static void main(String[] args) throws InterruptedException {
DelayedUniqueBlockingQueue<String> dq = new DelayedUniqueBlockingQueue<>();
System.out.println(dq.offer("A", Duration.ofSeconds(3))); // true
System.out.println(dq.offer("A", Duration.ofSeconds(1))); // false(重复)
System.out.println(dq.offer("B", Duration.ofSeconds(2))); // true
System.out.println("Take: " + dq.take()); // 以上设置,先输出 B
System.out.println("Take: " + dq.take());
}
执行结果
true
false
true
Take: B
Take: A
测试结果与预期一致。
关联
- java Queue队列实现生产消费模式-代码谷
- 深入 Java 对象相等性:从 equals()、hashCode() 到 ConcurrentHashMap 与 Objects.equals 的完整解析-代码谷
版权所有 © 【代码谷】 欢迎非商用转载,转载请按下面格式注明出处,商业转载请联系授权,违者必究。(提示:点击下方内容复制出处)
源文: Java延迟唯一队列原生实现 ,链接:https://www.daimagu.com/article/2512151319304248.html,来源:代码谷
评论