From a3eecf84aaa8b5e3a14d624ea6105f4e7db93058 Mon Sep 17 00:00:00 2001 From: kyle <573984425@qq.com> Date: Thu, 30 Jun 2022 10:55:36 +0800 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20=E5=8E=BB=E9=99=A4=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/jd/platform/async/wrapper/WorkerWrapper.java | 1 - 1 file changed, 1 deletion(-) diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java index bc07acc..ef7df9c 100755 --- a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java @@ -352,7 +352,6 @@ public abstract class WorkerWrapper { case TAKE_REST: //FIXME 等待200毫秒重新投入线程池,主要为了调起最后一个任务 Thread.sleep(200L); - System.out.println(id+"进入休息"); executorService.submit(() -> this.work(executorService, fromWrapper, remainTime - (SystemClock.now() - now), group)); return; -- Gitee From efa4a9f46c3decec7dc866e05dabf1a9f4ea061a Mon Sep 17 00:00:00 2001 From: kyle <573984425@qq.com> Date: Thu, 30 Jun 2022 15:32:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?refactor:=20=E5=90=88=E5=B9=B6=E7=9B=B8?= =?UTF-8?q?=E5=90=8C=E9=80=BB=E8=BE=91=E7=9A=84=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jd/platform/async/wrapper/WorkerWrapper.java | 12 ++++++------ .../async/openutil/timer/HashedWheelTimer.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java index ef7df9c..96dc92a 100755 --- a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java @@ -264,16 +264,16 @@ public abstract class WorkerWrapper { } } }; - final Runnable __function__callbackResultOfFalse_beginNext = - () -> { - __function__callbackResult.accept(false); + final Consumer __function__callbackResultOfFalse_beginNext = + (success) -> { + __function__callbackResult.accept(success); beginNext(executorService, now, remainTime, group); }; final BiConsumer __function__fastFail_callbackResult$false_beginNext = (fastFail_isTimeout, fastFail_exception) -> { boolean isEndsNormally = fastFail_exception instanceof EndsNormallyException; fastFail(fastFail_isTimeout && !isEndsNormally, fastFail_exception, isEndsNormally); - __function__callbackResultOfFalse_beginNext.run(); + __function__callbackResultOfFalse_beginNext.accept(false); }; final Runnable __function__doWork = () -> { @@ -281,8 +281,7 @@ public abstract class WorkerWrapper { try { if (fire(group)) { if (setState(state, WORKING, AFTER_WORK)) { - __function__callbackResult.accept(true); - beginNext(executorService, now, remainTime, group); + __function__callbackResultOfFalse_beginNext.accept(true); } } } catch (Exception e) { @@ -306,6 +305,7 @@ public abstract class WorkerWrapper { // 总的已经超时了,就快速失败,进行下一个 if (remainTime <= 0) { if (setState(state, states_of_beforeWorkingEnd, ERROR, null)) { + System.out.println("快速失败"); __function__fastFail_callbackResult$false_beginNext.accept(true, null); } return; diff --git a/asyncTool-openutil/src/main/java/com/jd/platform/async/openutil/timer/HashedWheelTimer.java b/asyncTool-openutil/src/main/java/com/jd/platform/async/openutil/timer/HashedWheelTimer.java index 5492b72..fbb6d1d 100644 --- a/asyncTool-openutil/src/main/java/com/jd/platform/async/openutil/timer/HashedWheelTimer.java +++ b/asyncTool-openutil/src/main/java/com/jd/platform/async/openutil/timer/HashedWheelTimer.java @@ -315,7 +315,7 @@ public class HashedWheelTimer extends AbstractWheelTimer { startTimeInitialized.countDown(); do { - //TODO 时间轮这里结束不了任务 + //TODO 时间轮这里一直执行,结束不了任务 final long deadline = waitForNextTick(); if (deadline > 0) { int idx = (int) (tick & mask); -- Gitee From a8e657e3ff0cf0801d54570e6cf0256118302a8c Mon Sep 17 00:00:00 2001 From: kyle <573984425@qq.com> Date: Thu, 30 Jun 2022 16:29:16 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix:=20=E8=B6=85=E6=97=B6=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B=E6=97=A0=E6=B3=95=E5=81=9C=E6=AD=A2=EF=BC=8C?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E6=9C=80=E5=90=8E=E4=B8=80=E4=B8=AA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E7=8A=B6=E6=80=81=E6=B2=A1=E6=9C=89=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA=E7=BB=93=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jd/platform/async/wrapper/WorkerWrapper.java | 7 ++++++- asyncTool-core/src/test/java/v15/cases/Case1.java | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java index 96dc92a..09d3b0f 100755 --- a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java @@ -20,6 +20,7 @@ import com.jd.platform.async.wrapper.strategy.skip.SkipStrategy; import java.util.*; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiConsumer; @@ -283,6 +284,11 @@ public abstract class WorkerWrapper { if (setState(state, WORKING, AFTER_WORK)) { __function__callbackResultOfFalse_beginNext.accept(true); } + }else { + //如果任务超时,需要将最后那个超时任务设置为超时异常结束的 + if (setState(state, WORKING, ERROR)) { + __function__fastFail_callbackResult$false_beginNext.accept(false, new TimeoutException()); + } } } catch (Exception e) { if (setState(state, WORKING, ERROR)) { @@ -305,7 +311,6 @@ public abstract class WorkerWrapper { // 总的已经超时了,就快速失败,进行下一个 if (remainTime <= 0) { if (setState(state, states_of_beforeWorkingEnd, ERROR, null)) { - System.out.println("快速失败"); __function__fastFail_callbackResult$false_beginNext.accept(true, null); } return; diff --git a/asyncTool-core/src/test/java/v15/cases/Case1.java b/asyncTool-core/src/test/java/v15/cases/Case1.java index 5711ca1..d737d4e 100644 --- a/asyncTool-core/src/test/java/v15/cases/Case1.java +++ b/asyncTool-core/src/test/java/v15/cases/Case1.java @@ -21,7 +21,7 @@ class Case1 { try { if ("F".equals(id)) { System.out.println("wrapper(id=" + id + ") is working"); - Thread.sleep(100); + Thread.sleep(2000); } else { System.out.println("wrapper(id=" + id + ") is worki444ng"); } @@ -63,7 +63,7 @@ class Case1 { ) .build(); try { - Async.work(5000, a, d).awaitFinish(); + Async.work(1000, a, d).awaitFinish(); } catch (InterruptedException e) { e.printStackTrace(); } -- Gitee From 5af4c078522f0842cfabba5e2bb676074f92025f Mon Sep 17 00:00:00 2001 From: kyle <573984425@qq.com> Date: Thu, 30 Jun 2022 16:42:07 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E8=B6=85=E6=97=B6=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E8=AE=BE=E7=BD=AE=E4=B8=BAtue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/jd/platform/async/wrapper/WorkerWrapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java index 09d3b0f..db522b5 100755 --- a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/WorkerWrapper.java @@ -287,7 +287,7 @@ public abstract class WorkerWrapper { }else { //如果任务超时,需要将最后那个超时任务设置为超时异常结束的 if (setState(state, WORKING, ERROR)) { - __function__fastFail_callbackResult$false_beginNext.accept(false, new TimeoutException()); + __function__fastFail_callbackResult$false_beginNext.accept(true, new TimeoutException()); } } } catch (Exception e) { -- Gitee