Micro optimizations regarding mattery network channel

This commit is contained in:
DBotThePony 2023-08-21 17:09:20 +07:00
parent dd2dab37a7
commit 6fbdb04ee4
Signed by: DBot
GPG Key ID: DCC23B5715498507

View File

@ -23,6 +23,7 @@ import java.math.BigInteger
import java.util.Optional import java.util.Optional
import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletableFuture
import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.ConcurrentLinkedDeque
import java.util.concurrent.ConcurrentLinkedQueue
import java.util.concurrent.locks.LockSupport import java.util.concurrent.locks.LockSupport
import java.util.function.BiConsumer import java.util.function.BiConsumer
import java.util.function.Supplier import java.util.function.Supplier
@ -127,7 +128,7 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) {
private val logger = LogManager.getLogger() private val logger = LogManager.getLogger()
private var thread: Thread? = null private var thread: Thread? = null
private val queue = ConcurrentLinkedDeque<Task>() private val queue = ConcurrentLinkedQueue<Task>()
@Volatile @Volatile
private var interrupt = false private var interrupt = false
@ -143,7 +144,7 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) {
*/ */
private fun run() { private fun run() {
while (!interrupt) { while (!interrupt) {
val task = queue.pollFirst() val task = queue.poll()
if (task == null) { if (task == null) {
LockSupport.park() LockSupport.park()
@ -160,8 +161,10 @@ abstract class MatteryNetworkChannel(val version: String, val name: String) {
} }
internal fun onServerPostTick() { internal fun onServerPostTick() {
if (queue.isNotEmpty()) {
LockSupport.unpark(thread) LockSupport.unpark(thread)
} }
}
internal fun onServerStarting() { internal fun onServerStarting() {
interrupt = false interrupt = false