3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-16 21:10:17 +01:00

Do not immediately re-queue repeating tasks, or they may simply keep repeating on this tick, until the 35ms time limit runs out.

Dieser Commit ist enthalten in:
Afforess 2011-07-13 17:26:33 -07:00 committet von EvilSeph
Ursprung 958acee5af
Commit 4a932c11de

Datei anzeigen

@ -49,6 +49,7 @@ public class CraftScheduler implements BukkitScheduler, Runnable {
long firstTick = -1;
long currentTick = -1;
CraftTask first = null;
TreeMap<CraftTask, Boolean> nextQueue = new TreeMap<CraftTask, Boolean>();
do {
synchronized (schedulerQueue) {
first = null;
@ -64,7 +65,7 @@ public class CraftScheduler implements BukkitScheduler, Runnable {
processTask(first);
if (first.getPeriod() >= 0) {
first.updateExecution();
schedulerQueue.put(first, first.isSync());
nextQueue.put(first, first.isSync());
}
} else {
stop = true;
@ -78,6 +79,10 @@ public class CraftScheduler implements BukkitScheduler, Runnable {
}
} while (!stop);
synchronized (schedulerQueue) {
schedulerQueue.putAll(nextQueue);
}
long sleepTime = 0;
if (first == null) {
sleepTime = 60000L;