ThreadCount #48

This commit is contained in:
zaxar163 2018-11-10 22:09:17 +03:00
parent ef57f8b02f
commit 7b2206580a
No known key found for this signature in database
GPG key ID: E3B309DD3852DE06
2 changed files with 18 additions and 6 deletions

View file

@ -66,7 +66,6 @@
public final class LaunchServer implements Runnable, AutoCloseable {
public static final class Config extends ConfigObject {
public final int port;
// Handlers & Providers
@ -80,7 +79,10 @@ public static final class Config extends ConfigObject {
public final HWIDHandler hwidHandler;
// Misc options
public final int threadCount;
public final int threadCoreCount;
public final ExeConf launch4j;
public final SignConf sign;
@ -111,6 +113,11 @@ private Config(BlockConfigEntry block, Path coredir, LaunchServer server) {
address = block.getEntry("address", StringConfigEntry.class);
port = VerifyHelper.verifyInt(block.getEntryValue("port", IntegerConfigEntry.class),
VerifyHelper.range(0, 65535), "Illegal LaunchServer port");
threadCoreCount = block.hasEntry("threadCoreCacheSize") ? VerifyHelper.verifyInt(block.getEntryValue("threadCoreCacheSize", IntegerConfigEntry.class),
VerifyHelper.range(2, 100), "Illegal LaunchServer thread cache size") : 0;
int internalThreadCount = block.hasEntry("threadCacheSize") ? VerifyHelper.verifyInt(block.getEntryValue("threadCacheSize", IntegerConfigEntry.class),
VerifyHelper.range(2, 100), "Illegal LaunchServer thread cache size") : (JVMHelper.OPERATING_SYSTEM_MXBEAN.getAvailableProcessors() >= 4 ? (JVMHelper.OPERATING_SYSTEM_MXBEAN.getAvailableProcessors() >= 6 ? JVMHelper.OPERATING_SYSTEM_MXBEAN.getAvailableProcessors() / 2 : JVMHelper.OPERATING_SYSTEM_MXBEAN.getAvailableProcessors()) : JVMHelper.OPERATING_SYSTEM_MXBEAN.getAvailableProcessors() / 2);
threadCount = threadCoreCount > internalThreadCount ? threadCoreCount : internalThreadCount;
authRateLimit = VerifyHelper.verifyInt(block.getEntryValue("authRateLimit", IntegerConfigEntry.class),
VerifyHelper.range(0, 1000000), "Illegal authRateLimit");
authRateLimitMilis = VerifyHelper.verifyInt(block.getEntryValue("authRateLimitMilis", IntegerConfigEntry.class),

View file

@ -5,8 +5,10 @@
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.atomic.AtomicReference;
@ -35,7 +37,7 @@ public interface Listener {
// Instance
private final LaunchServer server;
private final AtomicReference<ServerSocket> serverSocket = new AtomicReference<>();
private final ExecutorService threadPool = Executors.newCachedThreadPool(THREAD_FACTORY);
private final ExecutorService threadPool;
public final SessionManager sessionManager;
private final AtomicLong idCounter = new AtomicLong(0L);
@ -43,13 +45,16 @@ public interface Listener {
private volatile Listener listener;
public ServerSocketHandler(LaunchServer server) {
this.server = server;
sessionManager = new SessionManager();
this(server, new SessionManager());
GarbageManager.registerNeedGC(sessionManager);
}
public ServerSocketHandler(LaunchServer server, SessionManager sessionManager) {
this.server = server;
threadPool = new ThreadPoolExecutor(server.config.threadCoreCount, Integer.MAX_VALUE,
server.config.threadCount, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
THREAD_FACTORY);
this.sessionManager = sessionManager;
}