Commits

Sunmisc authored and md_5 committed 53254c56f9a
#1503: Simplify CAS loop to getAndSet
No tags

src/main/java/org/bukkit/craftbukkit/scheduler/CraftScheduler.java

Modified
437 437 } else if (task.isSync()) {
438 438 runners.remove(task.getTaskId());
439 439 }
440 440 }
441 441 pending.addAll(temp);
442 442 temp.clear();
443 443 debugHead = debugHead.getNextHead(currentTick);
444 444 }
445 445
446 446 private void addTask(final CraftTask task) {
447 - final AtomicReference<CraftTask> tail = this.tail;
448 - CraftTask tailTask = tail.get();
449 - while (!tail.compareAndSet(tailTask, task)) {
450 - tailTask = tail.get();
451 - }
447 + final CraftTask tailTask = this.tail.getAndSet(task);
452 448 tailTask.setNext(task);
453 449 }
454 450
455 451 private CraftTask handle(final CraftTask task, final long delay) {
456 452 task.setNextRun(currentTick + delay);
457 453 addTask(task);
458 454 return task;
459 455 }
460 456
461 457 private static void validate(final Plugin plugin, final Object task) {

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut