From a042a75155b218002b0496e1389019ef3ee61055 Mon Sep 17 00:00:00 2001 From: tcsnzh Date: Wed, 10 Nov 2021 18:29:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8DisFinish()=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=84=91=E6=8A=BD=E5=86=99=E5=8F=8D=E4=BA=86=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E4=BB=A5=E5=8F=8A=E7=94=B1=E5=85=B6=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84Issue#I4H28J=E7=AD=89=E5=85=B6=E4=BB=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jd/platform/async/executor/Async.java | 58 +++++++++---------- .../jd/platform/async/worker/OnceWork.java | 4 +- pom.xml | 8 +++ 3 files changed, 38 insertions(+), 32 deletions(-) diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/executor/Async.java b/asyncTool-core/src/main/java/com/jd/platform/async/executor/Async.java index e7649cb..7cc703d 100644 --- a/asyncTool-core/src/main/java/com/jd/platform/async/executor/Async.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/executor/Async.java @@ -7,7 +7,8 @@ import com.jd.platform.async.executor.timer.SystemClock; import com.jd.platform.async.worker.OnceWork; import com.jd.platform.async.wrapper.WorkerWrapper; import com.jd.platform.async.wrapper.WorkerWrapperGroup; -import com.sun.istack.internal.Nullable; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; import java.util.*; import java.util.concurrent.*; @@ -21,6 +22,7 @@ import java.util.stream.Collectors; * @author wuweifeng wrote on 2019-12-18 * @version 1.0 */ +@SuppressWarnings({"rawtypes", "DeprecatedIsStillUsed"}) public class Async { // ========================= 任务执行核心代码 ========================= @@ -142,7 +144,7 @@ public class Async { private final AtomicLong threadCount = new AtomicLong(0); @Override - public Thread newThread(Runnable r) { + public Thread newThread(@NonNull Runnable r) { Thread t = new Thread(r, "asyncTool-commonPool-thread-" + threadCount.getAndIncrement()); t.setDaemon(true); @@ -221,7 +223,7 @@ public class Async { */ @Deprecated public static boolean beginWork(long timeout, ExecutorService executorService, WorkerWrapper... workerWrapper) - throws ExecutionException, InterruptedException { + throws InterruptedException { if (workerWrapper == null || workerWrapper.length == 0) { return false; } @@ -236,7 +238,7 @@ public class Async { * @deprecated 已经被 {@link #work(long, ExecutorService, Collection, String)}方法取代。 */ @Deprecated - public static boolean beginWork(long timeout, WorkerWrapper... workerWrapper) throws ExecutionException, InterruptedException { + public static boolean beginWork(long timeout, WorkerWrapper... workerWrapper) throws InterruptedException { return beginWork(timeout, getCommonPool(), workerWrapper); } @@ -260,38 +262,34 @@ public class Async { } IGroupCallback finalGroupCallback = groupCallback; if (executorService != null) { - executorService.submit(() -> { - try { - boolean success = beginWork(timeout, executorService, workerWrapper); - if (success) { - finalGroupCallback.success(Arrays.asList(workerWrapper)); - } else { - finalGroupCallback.failure(Arrays.asList(workerWrapper), new TimeoutException()); - } - } catch (ExecutionException | InterruptedException e) { - e.printStackTrace(); - finalGroupCallback.failure(Arrays.asList(workerWrapper), e); - } - }); + submitBeginWork(timeout, finalGroupCallback, executorService, Arrays.asList(workerWrapper), workerWrapper); } else { final ExecutorService commonPool = getCommonPool(); - commonPool.submit(() -> { - try { - boolean success = beginWork(timeout, commonPool, workerWrapper); - if (success) { - finalGroupCallback.success(Arrays.asList(workerWrapper)); - } else { - finalGroupCallback.failure(Arrays.asList(workerWrapper), new TimeoutException()); - } - } catch (ExecutionException | InterruptedException e) { - e.printStackTrace(); - finalGroupCallback.failure(Arrays.asList(workerWrapper), e); - } - }); + submitBeginWork(timeout, finalGroupCallback, commonPool, Arrays.asList(workerWrapper), workerWrapper); } } + private static void submitBeginWork(long timeout, + IGroupCallback finalGroupCallback, + ExecutorService commonPool, + List workerWrappers, + WorkerWrapper[] workerWrapper) { + commonPool.submit(() -> { + try { + boolean success = beginWork(timeout, commonPool, workerWrapper); + if (success) { + finalGroupCallback.success(workerWrappers); + } else { + finalGroupCallback.failure(workerWrappers, new TimeoutException()); + } + } catch (InterruptedException e) { + e.printStackTrace(); + finalGroupCallback.failure(workerWrappers, e); + } + }); + } + /** * 关闭上次使用的线程池 * diff --git a/asyncTool-core/src/main/java/com/jd/platform/async/worker/OnceWork.java b/asyncTool-core/src/main/java/com/jd/platform/async/worker/OnceWork.java index 52dbb33..de733f2 100644 --- a/asyncTool-core/src/main/java/com/jd/platform/async/worker/OnceWork.java +++ b/asyncTool-core/src/main/java/com/jd/platform/async/worker/OnceWork.java @@ -277,7 +277,7 @@ public interface OnceWork { @Override public boolean isFinish() { - return group.getEndCDL().getCount() > 0; + return group.getEndCDL().getCount() == 0; } @Override @@ -302,7 +302,7 @@ public interface OnceWork { @Override public long getFinishTime() { - if (isFinish()) { + if (!isFinish()) { throw new IllegalStateException("work not finish."); } return group.getFinishTime(); diff --git a/pom.xml b/pom.xml index cdb66dc..36215e2 100644 --- a/pom.xml +++ b/pom.xml @@ -26,4 +26,12 @@ asyncTool-openutil asyncTool-core + + + + org.checkerframework + checker-qual + 3.8.0 + + \ No newline at end of file -- Gitee