From cfa68089b397a8f2a2ed2c05e3325170beb851e0 Mon Sep 17 00:00:00 2001 From: wuweifeng10 Date: Mon, 29 Nov 2021 13:22:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=8D=95=E4=B8=AA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=B6=85=E6=97=B6=E6=97=B6=E9=97=B4=E8=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/jd/platform/async/executor/Async.java | 6 +----- .../java/com/jd/platform/async/timewheel/WheelMain.java | 5 +++-- src/test/java/depend/DeWorker.java | 4 ++-- src/test/java/depend/Test.java | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) 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();