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())