mirror of
https://github.com/GravitLauncher/Launcher
synced 2025-04-01 22:14:01 +03:00
ThreadCount #48
This commit is contained in:
parent
ef57f8b02f
commit
7b2206580a
2 changed files with 18 additions and 6 deletions
|
@ -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),
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue