diff --git a/src/main/java/com/jd/platform/async/executor/Async.java b/src/main/java/com/jd/platform/async/executor/Async.java index 99354be..02ebecc 100644 --- a/src/main/java/com/jd/platform/async/executor/Async.java +++ b/src/main/java/com/jd/platform/async/executor/Async.java @@ -24,12 +24,8 @@ public class Async { * 注意,这里是个static,也就是只能有一个线程池。用户自定义线程池时,也只能定义一个 */ private static ExecutorService executorService; - /** - * 超时管理时间轮 - */ -// private static Timer timer = new Timer(); - /** + /* * 初始化时间轮 */ static { diff --git a/src/main/java/com/jd/platform/async/timewheel/WheelMain.java b/src/main/java/com/jd/platform/async/timewheel/WheelMain.java index 6e7e8a5..4666b7b 100644 --- a/src/main/java/com/jd/platform/async/timewheel/WheelMain.java +++ b/src/main/java/com/jd/platform/async/timewheel/WheelMain.java @@ -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 list = allTaskList.get(putIndex % MAX_SIZE); //添加到该槽位的队列中 list.add(singleTask); diff --git a/src/test/java/depend/DeWorker.java b/src/test/java/depend/DeWorker.java index dacefd7..5b024b4 100755 --- a/src/test/java/depend/DeWorker.java +++ b/src/test/java/depend/DeWorker.java @@ -16,7 +16,7 @@ public class DeWorker implements IWorker, ICallback @Override public User action(String object, Map allWrappers) { try { - Thread.sleep(70); + Thread.sleep(15); } catch (InterruptedException e) { e.printStackTrace(); } @@ -25,7 +25,7 @@ public class DeWorker implements IWorker, ICallback @Override public int timeout() { - return 75; + return 19; } @Override diff --git a/src/test/java/depend/Test.java b/src/test/java/depend/Test.java index 8cfc658..aa90e16 100644 --- a/src/test/java/depend/Test.java +++ b/src/test/java/depend/Test.java @@ -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();