package net.minecraft.util.thread; public abstract class ReentrantBlockableEventLoop extends BlockableEventLoop { private int reentrantCount; public ReentrantBlockableEventLoop(String string) { super(string); } @Override public boolean scheduleExecutables() { return this.runningTask() || super.scheduleExecutables(); } protected boolean runningTask() { return this.reentrantCount != 0; } @Override public void doRunTask(R task) { this.reentrantCount++; try { super.doRunTask(task); } finally { this.reentrantCount--; } } }