diff --git a/src/main/java/net/minecraft/server/network/NetHandlerLoginServer.java b/src/main/java/net/minecraft/server/network/NetHandlerLoginServer.java index 42386af..3785a72 100644 --- a/src/main/java/net/minecraft/server/network/NetHandlerLoginServer.java +++ b/src/main/java/net/minecraft/server/network/NetHandlerLoginServer.java @@ -6,13 +6,16 @@ import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import io.netty.util.concurrent.GenericFutureListener; + import java.math.BigInteger; import java.security.PrivateKey; import java.util.Arrays; import java.util.Random; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; + import javax.crypto.SecretKey; + import net.minecraft.network.EnumConnectionState; import net.minecraft.network.NetworkManager; import net.minecraft.network.login.INetHandlerLoginServer; @@ -25,9 +28,11 @@ import net.minecraft.util.ChatComponentText; import net.minecraft.util.CryptManager; import net.minecraft.util.IChatComponent; + import org.apache.commons.lang3.Validate; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.ultramine.server.util.GlobalExecutors; public class NetHandlerLoginServer implements INetHandlerLoginServer { @@ -148,7 +153,7 @@ this.field_147335_k = p_147315_1_.func_149300_a(privatekey); this.field_147328_g = NetHandlerLoginServer.LoginState.AUTHENTICATING; this.field_147333_a.enableEncryption(this.field_147335_k); - (new Thread("User Authenticator #" + field_147331_b.incrementAndGet()) + GlobalExecutors.cachedExecutor().execute(new Runnable() { private static final String __OBFID = "CL_00001459"; public void run() @@ -192,7 +197,7 @@ } } } - }).start(); + }); } } diff --git a/src/main/java/org/ultramine/server/util/GlobalExecutors.java b/src/main/java/org/ultramine/server/util/GlobalExecutors.java index 1874e1b..baecdb8 100644 --- a/src/main/java/org/ultramine/server/util/GlobalExecutors.java +++ b/src/main/java/org/ultramine/server/util/GlobalExecutors.java @@ -6,6 +6,7 @@ public class GlobalExecutors { private static final ExecutorService io = Executors.newSingleThreadExecutor(); + private static final ExecutorService cached = Executors.newCachedThreadPool(); /** * Обрабатывает задачи на сохранение чего-либо на диск/в БД. Используется @@ -16,4 +17,14 @@ { return io; } + + /** + * Обрабатывает задачи, требующие наискорейшего выполнения. Создает любое + * количество потоков по мере необходимости. При остановке сервер не ожидает + * окончания выполнения задач + */ + public static ExecutorService cachedExecutor() + { + return cached; + } }