From f7dee00c85a3c65a1132e1aa3f8a5aac417ba887 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 19 Apr 2015 09:19:39 +1000 Subject: [PATCH] Use CLQ for main thread tasks. diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java index 88640a5..1aa659d 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -104,7 +104,7 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs private long X = 0L; private final GameProfileRepository Y; private final UserCache Z; - protected final Queue> j = Queues.newArrayDeque(); + protected final Queue> j = new java.util.concurrent.ConcurrentLinkedQueue>(); // Spigot, PAIL: Rename private Thread serverThread; private long ab = ay(); @@ -705,11 +705,13 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs this.methodProfiler.a("jobs"); Queue queue = this.j; - synchronized (this.j) { - while (!this.j.isEmpty()) { - SystemUtils.a((FutureTask) this.j.poll(), MinecraftServer.LOGGER); - } - } + // Spigot start + FutureTask entry; + int count = this.j.size(); + while ((entry = this.j.poll()) != null && count-- > 0) { + SystemUtils.a(entry, MinecraftServer.LOGGER); + } + // Spigot end this.methodProfiler.c("levels"); @@ -1493,10 +1495,10 @@ public abstract class MinecraftServer implements Runnable, ICommandListener, IAs ListenableFutureTask listenablefuturetask = ListenableFutureTask.create(callable); Queue queue = this.j; - synchronized (this.j) { - this.j.add(listenablefuturetask); - return listenablefuturetask; - } + // Spigot start + this.j.add(listenablefuturetask); + return listenablefuturetask; + // Spigot end } else { try { return Futures.immediateFuture(callable.call()); -- 2.1.0