From db3a162d1a1a5c911a9cee6b2ff3a28e5eda196d Mon Sep 17 00:00:00 2001 From: kyle <573984425@qq.com> Date: Fri, 18 Mar 2022 16:20:45 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=9C=80=E5=90=8E=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E4=BB=BB=E5=8A=A1=E4=B8=8D=E8=83=BD=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jd/platform/async/wrapper/WorkerWrapper.java | 4 +++- .../wrapper/strategy/depend/DependenceStrategy.java | 2 -- asyncTool-core/src/test/java/v15/cases/Case1.java | 9 ++++++--- .../platform/async/openutil/timer/HashedWheelTimer.java | 1 + 4 files changed, 10 insertions(+), 6 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 1d09816..b4d92c7 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 @@ -362,7 +362,9 @@ public abstract class WorkerWrapper { wrapperStrategy.judgeAction(getDependWrappers(), this, fromWrapper); switch (judge.getDependenceAction()) { case TAKE_REST: - System.out.println("TAKE_REST\t"+id+"\t"+fromWrapper.id); + //FIXME 等待200毫秒重新投入线程池,主要为了调起最后一个任务 + Thread.sleep(200L); + executorService.submit(() -> this.work(executorService, fromWrapper, remainTime, group)); return; case FAST_FAIL: if (setState(state, STARTED, ERROR)) { diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/strategy/depend/DependenceStrategy.java b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/strategy/depend/DependenceStrategy.java index 0b2c3df..e45aedc 100644 --- a/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/strategy/depend/DependenceStrategy.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/wrapper/strategy/depend/DependenceStrategy.java @@ -1,6 +1,5 @@ package com.jd.platform.async.wrapper.strategy.depend; -import com.jd.platform.async.exception.SkippedException; import com.jd.platform.async.worker.ResultState; import com.jd.platform.async.worker.WorkResult; import com.jd.platform.async.wrapper.WorkerWrapper; @@ -111,7 +110,6 @@ public interface DependenceStrategy { } } if (hasWaiting) { - System.out.println(Thread.currentThread().getName()+"\thasWaiting\t"+thisWrapper.getId()+"\t"+fromWrapper.getId()); return DependenceAction.TAKE_REST.emptyProperty(); } return DependenceAction.START_WORK.emptyProperty(); diff --git a/asyncTool-core/src/test/java/v15/cases/Case1.java b/asyncTool-core/src/test/java/v15/cases/Case1.java index 44547e3..394353d 100644 --- a/asyncTool-core/src/test/java/v15/cases/Case1.java +++ b/asyncTool-core/src/test/java/v15/cases/Case1.java @@ -15,14 +15,17 @@ class Case1 { return WorkerWrapper.builder() .id(id) .worker((param, allWrappers) -> { - System.out.println("wrapper(id=" + id + ") is working"); try { if ("F".equals(id)) { - Thread.sleep(50); + System.out.println("wrapper(id=" + id + ") is working"); + Thread.sleep(5000); } } catch (InterruptedException e) { e.printStackTrace(); } + if ("F".equals(id)) { + System.out.println("wrapper(id=" + id + ") is worki444ng"); + } return id; }); } @@ -44,7 +47,7 @@ class Case1 { ) .build(); try { - Async.work(10000, a, d).awaitFinish(); + Async.work(1000, a, d).awaitFinish(); } catch (InterruptedException e) { e.printStackTrace(); } 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 90df6e9..5492b72 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,6 +315,7 @@ public class HashedWheelTimer extends AbstractWheelTimer { startTimeInitialized.countDown(); do { + //TODO 时间轮这里结束不了任务 final long deadline = waitForNextTick(); if (deadline > 0) { int idx = (int) (tick & mask);