From 9d41bb9c0b0071f2bff1f8c6b83e50fc73314b16 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 1 May 2016 20:25:40 +0000 Subject: [PATCH] Reuse of Iterator for SelectorThread. --- .../l2jmobius/commons/mmocore/SelectorThread.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/trunk/java/com/l2jmobius/commons/mmocore/SelectorThread.java b/trunk/java/com/l2jmobius/commons/mmocore/SelectorThread.java index 5ce1dc83ba..462cfaac76 100644 --- a/trunk/java/com/l2jmobius/commons/mmocore/SelectorThread.java +++ b/trunk/java/com/l2jmobius/commons/mmocore/SelectorThread.java @@ -26,6 +26,7 @@ import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; +import java.util.Iterator; import java.util.LinkedList; /** @@ -141,8 +142,12 @@ public final class SelectorThread>extends Thread public final void run() { int selectedKeysCount = 0; + + SelectionKey key; MMOConnection con; + Iterator selectedKeys; + while (!_shutdown) { try @@ -156,9 +161,13 @@ public final class SelectorThread>extends Thread if (selectedKeysCount > 0) { - for (SelectionKey key : _selector.selectedKeys()) + selectedKeys = _selector.selectedKeys().iterator(); + + while (selectedKeys.hasNext()) { - _selector.selectedKeys().remove(key); + key = selectedKeys.next(); + selectedKeys.remove(); + con = (MMOConnection) key.attachment(); switch (key.readyOps())