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 b4d92c7..42785b5 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 @@ -364,7 +364,7 @@ public abstract class WorkerWrapper { case TAKE_REST: //FIXME 等待200毫秒重新投入线程池,主要为了调起最后一个任务 Thread.sleep(200L); - executorService.submit(() -> this.work(executorService, fromWrapper, remainTime, group)); + executorService.submit(() -> this.work(executorService, fromWrapper, remainTime-(SystemClock.now()-now), group)); return; case FAST_FAIL: if (setState(state, STARTED, ERROR)) { diff --git a/asyncTool-core/src/test/java/v15/cases/Case1.java b/asyncTool-core/src/test/java/v15/cases/Case1.java index d917c6d..29059cb 100644 --- a/asyncTool-core/src/test/java/v15/cases/Case1.java +++ b/asyncTool-core/src/test/java/v15/cases/Case1.java @@ -1,6 +1,7 @@ package v15.cases; import com.jd.platform.async.executor.Async; +import com.jd.platform.async.executor.timer.SystemClock; import com.jd.platform.async.wrapper.WorkerWrapper; import com.jd.platform.async.wrapper.WorkerWrapperBuilder; @@ -18,8 +19,8 @@ class Case1 { try { if ("F".equals(id)) { System.out.println("wrapper(id=" + id + ") is working"); - Thread.sleep(5000); - }else { + Thread.sleep(12000); + } else { System.out.println("wrapper(id=" + id + ") is worki444ng"); } } catch (InterruptedException e) { @@ -30,6 +31,7 @@ class Case1 { } public static void main(String[] args) { + long now = SystemClock.now(); WorkerWrapper a = builder("A").build(); WorkerWrapper d; builder("H") @@ -46,10 +48,11 @@ class Case1 { ) .build(); try { - Async.work(1000, a, d).awaitFinish(); + Async.work(10000, a, d).awaitFinish(); } catch (InterruptedException e) { e.printStackTrace(); } + System.out.println("now:" + (SystemClock.now() - now)); /* 输出: wrapper(id=D) is working wrapper(id=A) is working