From 0c0cee756a18df5daa989616df39178dd69ae0e1 Mon Sep 17 00:00:00 2001 From: Redkale Date: Mon, 2 Jan 2023 16:24:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96AsyncIOGroup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/boot/Application.java | 6 +++--- src/main/java/org/redkale/net/AsyncIOGroup.java | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index 2398b2f78..a9e628485 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -158,7 +158,7 @@ public final class Application { private final TransportFactory sncpTransportFactory; //给客户端使用,包含SNCP客户端、自定义数据库客户端连接池 - private final AsyncGroup clientAsyncGroup; + private final AsyncIOGroup clientAsyncGroup; //配置源管理接口 //@since 2.7.0 @@ -628,7 +628,7 @@ public final class Application { this.resourceFactory.register(RESNAME_APP_EXECUTOR, Executor.class, this.workExecutor); this.resourceFactory.register(RESNAME_APP_EXECUTOR, ExecutorService.class, this.workExecutor); - this.clientAsyncGroup = new AsyncIOGroup(true, null, clientExecutor, bufferCapacity, bufferPoolSize); + this.clientAsyncGroup = new AsyncIOGroup(true, null, clientExecutor, bufferCapacity, bufferPoolSize).skipClose(true); this.resourceFactory.register(RESNAME_APP_CLIENT_ASYNCGROUP, AsyncGroup.class, this.clientAsyncGroup); this.excludelibs = excludelib0; @@ -2495,7 +2495,7 @@ public final class Application { } if (this.clientAsyncGroup != null) { long s = System.currentTimeMillis(); - ((AsyncIOGroup) this.clientAsyncGroup).close(); + ((AsyncIOGroup) this.clientAsyncGroup).dispose(); logger.info("AsyncGroup destroy in " + (System.currentTimeMillis() - s) + " ms"); } this.sncpTransportFactory.shutdownNow(); diff --git a/src/main/java/org/redkale/net/AsyncIOGroup.java b/src/main/java/org/redkale/net/AsyncIOGroup.java index cd061bf7c..2b292b638 100644 --- a/src/main/java/org/redkale/net/AsyncIOGroup.java +++ b/src/main/java/org/redkale/net/AsyncIOGroup.java @@ -31,6 +31,8 @@ public class AsyncIOGroup extends AsyncGroup { private boolean closed; + private boolean skipClose; + AsyncIOThread[] ioThreads; private AsyncIOThread connectThread; @@ -121,6 +123,19 @@ public class AsyncIOGroup extends AsyncGroup { @Override public AsyncGroup close() { + if (skipClose) { + return this; + } else { + return dispose(); + } + } + + public AsyncIOGroup skipClose(boolean skip) { + this.skipClose = skip; + return this; + } + + public AsyncIOGroup dispose() { if (shareCount.decrementAndGet() > 0) { return this; }