From 4220ff48d35322624146f06dec840a1251186621 Mon Sep 17 00:00:00 2001 From: nuyh Date: Mon, 11 Sep 2023 17:23:23 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20new=20Thread()=EB=A1=9C=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=ED=95=98=EB=8D=98=20=EC=8A=A4=EB=A0=88=EB=93=9C?= =?UTF-8?q?=EB=A5=BC=20=EC=8A=A4=EB=A0=88=EB=93=9C=ED=92=80=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apache/catalina/connector/Connector.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/tomcat/src/main/java/org/apache/catalina/connector/Connector.java b/tomcat/src/main/java/org/apache/catalina/connector/Connector.java index 3b2c4dda7c..45b25272e2 100644 --- a/tomcat/src/main/java/org/apache/catalina/connector/Connector.java +++ b/tomcat/src/main/java/org/apache/catalina/connector/Connector.java @@ -8,6 +8,9 @@ import java.io.UncheckedIOException; import java.net.ServerSocket; import java.net.Socket; +import java.util.concurrent.LinkedBlockingDeque; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; public class Connector implements Runnable { @@ -15,17 +18,27 @@ public class Connector implements Runnable { private static final int DEFAULT_PORT = 8080; private static final int DEFAULT_ACCEPT_COUNT = 100; + private static final int DEFAULT_MAX_THREADS = 10; + private static final int DEFAULT_CORE_THREADS = 0; + private static final int DEFAULT_THREAD_ALIVE_SECONDS = 10; private final ServerSocket serverSocket; + private final ThreadPoolExecutor threadPoolExecutor; + private boolean stopped; public Connector() { - this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT); + this(DEFAULT_PORT, DEFAULT_ACCEPT_COUNT, DEFAULT_MAX_THREADS); } - public Connector(final int port, final int acceptCount) { + public Connector(final int port, final int acceptCount, final int maxThreads) { this.serverSocket = createServerSocket(port, acceptCount); this.stopped = false; + this.threadPoolExecutor = new ThreadPoolExecutor(DEFAULT_CORE_THREADS, + maxThreads, + DEFAULT_THREAD_ALIVE_SECONDS, + TimeUnit.SECONDS, + new LinkedBlockingDeque<>(maxThreads)); } private ServerSocket createServerSocket(final int port, final int acceptCount) { @@ -67,7 +80,7 @@ private void process(final Socket connection) { return; } var processor = new Http11Processor(connection); - new Thread(processor).start(); + threadPoolExecutor.execute(processor); } public void stop() {