diff --git a/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java index 0ab8a2509a..c035c94ee3 100644 --- a/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java +++ b/common/src/main/java/io/netty/util/concurrent/GlobalEventExecutor.java @@ -104,15 +104,11 @@ public final class GlobalEventExecutor extends AbstractScheduledEventExecutor { } private void fetchFromScheduledTaskQueue() { - if (hasScheduledTasks()) { - long nanoTime = AbstractScheduledEventExecutor.nanoTime(); - for (;;) { - Runnable scheduledTask = pollScheduledTask(nanoTime); - if (scheduledTask == null) { - break; - } - taskQueue.add(scheduledTask); - } + long nanoTime = AbstractScheduledEventExecutor.nanoTime(); + Runnable scheduledTask = pollScheduledTask(nanoTime); + while (scheduledTask != null) { + taskQueue.add(scheduledTask); + scheduledTask = pollScheduledTask(nanoTime); } } diff --git a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java index 0423c31bc5..b5d9d7aa1f 100644 --- a/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java +++ b/common/src/main/java/io/netty/util/concurrent/SingleThreadEventExecutor.java @@ -276,19 +276,15 @@ public abstract class SingleThreadEventExecutor extends AbstractScheduledEventEx } private boolean fetchFromScheduledTaskQueue() { - if (hasScheduledTasks()) { - long nanoTime = AbstractScheduledEventExecutor.nanoTime(); - for (;;) { - Runnable scheduledTask = pollScheduledTask(nanoTime); - if (scheduledTask == null) { - break; - } - if (!taskQueue.offer(scheduledTask)) { - // No space left in the task queue add it back to the scheduledTaskQueue so we pick it up again. - scheduledTaskQueue().add((ScheduledFutureTask) scheduledTask); - return false; - } + long nanoTime = AbstractScheduledEventExecutor.nanoTime(); + Runnable scheduledTask = pollScheduledTask(nanoTime); + while (scheduledTask != null) { + if (!taskQueue.offer(scheduledTask)) { + // No space left in the task queue add it back to the scheduledTaskQueue so we pick it up again. + scheduledTaskQueue().add((ScheduledFutureTask) scheduledTask); + return false; } + scheduledTask = pollScheduledTask(nanoTime); } return true; }