mirror of
https://gitee.com/jd-platform-opensource/asyncTool.git
synced 2026-03-22 04:27:15 +08:00
设置单个任务超时时间轮
This commit is contained in:
@@ -24,12 +24,8 @@ public class Async {
|
||||
* 注意,这里是个static,也就是只能有一个线程池。用户自定义线程池时,也只能定义一个
|
||||
*/
|
||||
private static ExecutorService executorService;
|
||||
/**
|
||||
* 超时管理时间轮
|
||||
*/
|
||||
// private static Timer timer = new Timer();
|
||||
|
||||
/**
|
||||
/*
|
||||
* 初始化时间轮
|
||||
*/
|
||||
static {
|
||||
|
||||
@@ -70,6 +70,7 @@ public class WheelMain {
|
||||
|
||||
long currentTimeMillis = System.currentTimeMillis();
|
||||
|
||||
// System.out.println("当前时间 " + currentTimeMillis);
|
||||
//遍历槽内所有任务
|
||||
for (SingleTask singleTask : timerTaskList) {
|
||||
//如果level = 0,代表时间到了,或者创建时间+超时时间>当前时间了,也是时间到了
|
||||
@@ -99,8 +100,8 @@ public class WheelMain {
|
||||
if (delay <= 0) {
|
||||
return;
|
||||
}
|
||||
//放到第几个槽,因为在add进来时,任务就已经开始执行了,要减去在添加这一霎那的那1毫秒的槽位
|
||||
int putIndex = INDEX.get() + delay % MAX_SIZE - 1 + 20;
|
||||
//放到第几个槽
|
||||
int putIndex = INDEX.get() + delay % MAX_SIZE;
|
||||
CopyOnWriteArrayList<SingleTask> list = allTaskList.get(putIndex % MAX_SIZE);
|
||||
//添加到该槽位的队列中
|
||||
list.add(singleTask);
|
||||
|
||||
@@ -16,7 +16,7 @@ public class DeWorker implements IWorker<String, User>, ICallback<String, User>
|
||||
@Override
|
||||
public User action(String object, Map<String, WorkerWrapper> allWrappers) {
|
||||
try {
|
||||
Thread.sleep(70);
|
||||
Thread.sleep(15);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -25,7 +25,7 @@ public class DeWorker implements IWorker<String, User>, ICallback<String, User>
|
||||
|
||||
@Override
|
||||
public int timeout() {
|
||||
return 75;
|
||||
return 19;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,7 +20,7 @@ public class Test {
|
||||
|
||||
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
for (int i = 0; i < 100000; i++) {
|
||||
DeWorker w = new DeWorker();
|
||||
DeWorker1 w1 = new DeWorker1();
|
||||
DeWorker2 w2 = new DeWorker2();
|
||||
|
||||
Reference in New Issue
Block a user