From 6a605359d7ffe6918072cc68bdc307b1fa0b3c86 Mon Sep 17 00:00:00 2001 From: Redkale Date: Mon, 9 Jan 2023 17:46:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96ClientExecutor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/redkale/boot/Application.java | 30 +++++++++--------- .../redkale/net/client/ClientConnection.java | 31 ------------------- .../redkale/source/AbstractDataSource.java | 3 ++ 3 files changed, 18 insertions(+), 46 deletions(-) diff --git a/src/main/java/org/redkale/boot/Application.java b/src/main/java/org/redkale/boot/Application.java index f81d64197..8d21ea1e8 100644 --- a/src/main/java/org/redkale/boot/Application.java +++ b/src/main/java/org/redkale/boot/Application.java @@ -582,25 +582,25 @@ public final class Application { ExecutorService workExecutor0 = null; ExecutorService clientExecutor; - { - if (executorConf == null) { - executorConf = DefaultAnyValue.create(); - } - final AtomicReference workref = new AtomicReference<>(); - final int workThreads = executorConf.getIntValue("threads", Math.max(2, Utility.cpus())); - boolean workHash = executorConf.getBoolValue("hash", false); - if (workThreads > 0) { - if (workHash) { - workExecutor0 = WorkThread.createHashExecutor(workThreads, "Redkale-HashWorkThread-%s"); - } else { - workExecutor0 = WorkThread.createExecutor(workThreads, "Redkale-WorkThread-%s"); - } - workref.set(workExecutor0); + if (executorConf == null) { + executorConf = DefaultAnyValue.create(); + } + final int workThreads = executorConf.getIntValue("threads", Math.max(2, Utility.cpus())); + boolean workHash = executorConf.getBoolValue("hash", false); + if (workThreads > 0) { + if (workHash) { + workExecutor0 = WorkThread.createHashExecutor(workThreads, "Redkale-HashWorkThread-%s"); + } else { + workExecutor0 = WorkThread.createExecutor(workThreads, "Redkale-WorkThread-%s"); } + } + clientExecutor = workExecutor0; + if (clientExecutor == null) { //给所有client给一个默认的ExecutorService - final int clientThreads = Math.max(Math.max(2, Utility.cpus()), workThreads / 2); + final int clientThreads = Math.max(Math.max(2, Utility.cpus()), workThreads); clientExecutor = WorkThread.createExecutor(clientThreads, "Redkale-DefaultClient-WorkThread-%s"); } + this.workExecutor = workExecutor0; this.resourceFactory.register(RESNAME_APP_EXECUTOR, Executor.class, this.workExecutor); this.resourceFactory.register(RESNAME_APP_EXECUTOR, ExecutorService.class, this.workExecutor); diff --git a/src/main/java/org/redkale/net/client/ClientConnection.java b/src/main/java/org/redkale/net/client/ClientConnection.java index f58ad60da..2e08401fa 100644 --- a/src/main/java/org/redkale/net/client/ClientConnection.java +++ b/src/main/java/org/redkale/net/client/ClientConnection.java @@ -223,37 +223,6 @@ public abstract class ClientConnection implements Co workThread = request.workThread; request.workThread = null; } -// if (rs.exc != null) { -// if (workThread == null || workThread == Thread.currentThread() || workThread.inIO() -// || workThread.getState() != Thread.State.RUNNABLE) { -// if (request != null) { -// Traces.currTraceid(request.traceid); -// } -// respFuture.completeExceptionally(rs.exc); -// } else { -// workThread.execute(() -> { -// if (request != null) { -// Traces.currTraceid(request.traceid); -// } -// respFuture.completeExceptionally(rs.exc); -// }); -// } -// } else { -// if (workThread == null || workThread == Thread.currentThread() || workThread.inIO() -// || workThread.getState() != Thread.State.RUNNABLE) { -// if (request != null) { -// Traces.currTraceid(request.traceid); -// } -// respFuture.complete(rs.message); -// } else { -// workThread.execute(() -> { -// if (request != null) { -// Traces.currTraceid(request.traceid); -// } -// respFuture.complete(rs.message); -// }); -// } -// } if (workThread == null || workThread.getWorkExecutor() == null) { workThread = channel.getReadIOThread(); } diff --git a/src/main/java/org/redkale/source/AbstractDataSource.java b/src/main/java/org/redkale/source/AbstractDataSource.java index f9a05e542..5f66723a5 100644 --- a/src/main/java/org/redkale/source/AbstractDataSource.java +++ b/src/main/java/org/redkale/source/AbstractDataSource.java @@ -13,8 +13,10 @@ import java.util.function.*; import java.util.stream.Stream; import org.redkale.annotation.AutoLoad; import org.redkale.annotation.Comment; +import org.redkale.annotation.*; import org.redkale.annotation.ResourceListener; import org.redkale.annotation.ResourceType; +import static org.redkale.boot.Application.RESNAME_APP_EXECUTOR; import org.redkale.convert.json.JsonConvert; import org.redkale.net.WorkThread; import org.redkale.persistence.Entity; @@ -110,6 +112,7 @@ public abstract class AbstractDataSource extends AbstractService implements Data private int sourceThreads = Utility.cpus(); + @Resource(name = RESNAME_APP_EXECUTOR, required = false) private ExecutorService sourceExecutor; @Override