当前位置:网站首页>Delayqueue usage and scenarios of delay queue
Delayqueue usage and scenarios of delay queue
2022-07-05 07:13:00 【Bubble ^ bubble】
An implementation PriorityBlockingQueue Realize the boundless queue of delay acquisition , When you create an element , You can specify how long it takes to get the current element from the queue . Only after the delay expires can the element be retrieved from the queue .
Use scenarios :
1. Scheduled task scheduling . Use DelayQueue Save the tasks and execution time that will be performed on that day , Once from DelayQueue Get the task and start executing , From, for example TimerQueue Is the use of DelayQueue Realized .
2. The design of cache system : It can be used DelayQueue Save the validity of the cache elements , Use a thread loop to query DelayQueue, Once you can get from DelayQueue When getting elements in , Indicates that the cache expiration date is .
3. Order late payment close .(MQ Delayed message queuing / Time wheel / Timing task )
Code case
package thread;
import java.util.concurrent.Delayed;
import java.util.concurrent.TimeUnit;
public class DelayQueueExampleTask implements Delayed {
private String orderId;
private long start = System.currentTimeMillis();
private long time;
public DelayQueueExampleTask(String orderId,long time) {
this.orderId = orderId;
this.time = time;
}
@Override
public long getDelay(TimeUnit unit) {
return unit.convert((start+time)-System.currentTimeMillis(),TimeUnit.MILLISECONDS);
}
@Override
public int compareTo(Delayed o) {
return (int)(this.getDelay(TimeUnit.MILLISECONDS)-o.getDelay(TimeUnit.MILLISECONDS));
}
@Override
public String toString() {
return "DelayQueueExampleTask{" +
"orderId='" + orderId + '\'' +
", start=" + start +
", time=" + time +
'}';
}
}
package thread;
import java.util.concurrent.DelayQueue;
public class DelayQueueExampleTaskTest {
private static DelayQueue<DelayQueueExampleTask> delayQueue = new DelayQueue();
public static void main(String[] args) {
delayQueue.offer(new DelayQueueExampleTask("1001",1000));
delayQueue.offer(new DelayQueueExampleTask("1002",2000));
delayQueue.offer(new DelayQueueExampleTask("1003",3000));
delayQueue.offer(new DelayQueueExampleTask("1004",5000));
delayQueue.offer(new DelayQueueExampleTask("1005",6000));
delayQueue.offer(new DelayQueueExampleTask("1006",7000));
delayQueue.offer(new DelayQueueExampleTask("1007",8000));
delayQueue.offer(new DelayQueueExampleTask("1008",3000));
while(true){
try {
DelayQueueExampleTask task = delayQueue.take();
System.out.println(task);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
Execution effect :
边栏推荐
- Ros2 - function package (VI)
- SOC_SD_DATA_FSM
- Intelligent target detection 59 -- detailed explanation of pytoch focal loss and its implementation in yolov4
- PowerManagerService(一)— 初始化
- Ros2 - node (VII)
- About vscode, "code unreachable" will be displayed when calling sendline series functions with pwntools“
- mysql设置触发器问题
- Orin two brushing methods
- Solve tensorfow GPU modulenotfounderror: no module named 'tensorflow_ core. estimator‘
- Netease to B, soft outside, hard in
猜你喜欢

逻辑结构与物理结构
![[node] NVM version management tool](/img/26/f13a2451c2f177a86bcb2920936468.png)
[node] NVM version management tool

Import CV2 prompt importerror: libgl so. 1: Cannot open shared object file: no such file or directory

ROS2——功能包(六)

IPage can display data normally, but total is always equal to 0

Mipi interface, DVP interface and CSI interface of camera

PHY drive commissioning - phy controller drive (II)

C learning notes

SD_ CMD_ RECEIVE_ SHIFT_ REGISTER

SOC_ SD_ CMD_ FSM
随机推荐
能量守恒和打造能量缺口
Pytorch has been installed in anaconda, and pycharm normally runs code, but vs code displays no module named 'torch‘
Anaconda navigator click open no response, can not start error prompt attributeerror: 'STR' object has no attribute 'get‘
PHY驱动调试之 --- PHY控制器驱动(二)
SD_ CMD_ SEND_ SHIFT_ REGISTER
The SQL implementation has multiple records with the same ID, and the latest one is taken
氢氧化钠是什么?
ROS2——Service服务(九)
ROS2——配置开发环境(五)
The differences and connections among cookies, sessions, JWT, and tokens
ORACLE CREATE SEQUENCE,ALTER SEQUENCE,DROP SEQUENCE
Ros2 - first acquaintance with ros2 (I)
[untitled]
npm install -g/--save/--save-dev的区别
PostMessage communication
U-boot initialization and workflow analysis
Orin two brushing methods
目标检测系列——Faster R-CNN原理详解
ROS2——topic话题(八)
Powermanagerservice (I) - initialization