优化AsyncIOGroup

This commit is contained in:
Redkale
2023-01-02 16:24:56 +08:00
parent 21f66d13ee
commit 0c0cee756a
2 changed files with 18 additions and 3 deletions

View File

@@ -158,7 +158,7 @@ public final class Application {
private final TransportFactory sncpTransportFactory; private final TransportFactory sncpTransportFactory;
//给客户端使用包含SNCP客户端、自定义数据库客户端连接池 //给客户端使用包含SNCP客户端、自定义数据库客户端连接池
private final AsyncGroup clientAsyncGroup; private final AsyncIOGroup clientAsyncGroup;
//配置源管理接口 //配置源管理接口
//@since 2.7.0 //@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, Executor.class, this.workExecutor);
this.resourceFactory.register(RESNAME_APP_EXECUTOR, ExecutorService.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.resourceFactory.register(RESNAME_APP_CLIENT_ASYNCGROUP, AsyncGroup.class, this.clientAsyncGroup);
this.excludelibs = excludelib0; this.excludelibs = excludelib0;
@@ -2495,7 +2495,7 @@ public final class Application {
} }
if (this.clientAsyncGroup != null) { if (this.clientAsyncGroup != null) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
((AsyncIOGroup) this.clientAsyncGroup).close(); ((AsyncIOGroup) this.clientAsyncGroup).dispose();
logger.info("AsyncGroup destroy in " + (System.currentTimeMillis() - s) + " ms"); logger.info("AsyncGroup destroy in " + (System.currentTimeMillis() - s) + " ms");
} }
this.sncpTransportFactory.shutdownNow(); this.sncpTransportFactory.shutdownNow();

View File

@@ -31,6 +31,8 @@ public class AsyncIOGroup extends AsyncGroup {
private boolean closed; private boolean closed;
private boolean skipClose;
AsyncIOThread[] ioThreads; AsyncIOThread[] ioThreads;
private AsyncIOThread connectThread; private AsyncIOThread connectThread;
@@ -121,6 +123,19 @@ public class AsyncIOGroup extends AsyncGroup {
@Override @Override
public AsyncGroup close() { 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) { if (shareCount.decrementAndGet() > 0) {
return this; return this;
} }