diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryNetworkChannel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryNetworkChannel.kt index 86fd7f0df..bda3984b9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryNetworkChannel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/network/MatteryNetworkChannel.kt @@ -23,6 +23,7 @@ import java.math.BigInteger import java.util.Optional import java.util.concurrent.CompletableFuture import java.util.concurrent.ConcurrentLinkedDeque +import java.util.concurrent.ConcurrentLinkedQueue import java.util.concurrent.locks.LockSupport import java.util.function.BiConsumer import java.util.function.Supplier @@ -127,7 +128,7 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) { private val logger = LogManager.getLogger() private var thread: Thread? = null - private val queue = ConcurrentLinkedDeque() + private val queue = ConcurrentLinkedQueue() @Volatile private var interrupt = false @@ -143,7 +144,7 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) { */ private fun run() { while (!interrupt) { - val task = queue.pollFirst() + val task = queue.poll() if (task == null) { LockSupport.park() @@ -160,7 +161,9 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) { } internal fun onServerPostTick() { - LockSupport.unpark(thread) + if (queue.isNotEmpty()) { + LockSupport.unpark(thread) + } } internal fun onServerStarting() {