Reuse of Iterator for SelectorThread.
This commit is contained in:
@@ -26,6 +26,7 @@ import java.nio.channels.SelectionKey;
|
|||||||
import java.nio.channels.Selector;
|
import java.nio.channels.Selector;
|
||||||
import java.nio.channels.ServerSocketChannel;
|
import java.nio.channels.ServerSocketChannel;
|
||||||
import java.nio.channels.SocketChannel;
|
import java.nio.channels.SocketChannel;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -141,8 +142,12 @@ public final class SelectorThread<T extends MMOClient<?>>extends Thread
|
|||||||
public final void run()
|
public final void run()
|
||||||
{
|
{
|
||||||
int selectedKeysCount = 0;
|
int selectedKeysCount = 0;
|
||||||
|
|
||||||
|
SelectionKey key;
|
||||||
MMOConnection<T> con;
|
MMOConnection<T> con;
|
||||||
|
|
||||||
|
Iterator<SelectionKey> selectedKeys;
|
||||||
|
|
||||||
while (!_shutdown)
|
while (!_shutdown)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -156,9 +161,13 @@ public final class SelectorThread<T extends MMOClient<?>>extends Thread
|
|||||||
|
|
||||||
if (selectedKeysCount > 0)
|
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<T>) key.attachment();
|
con = (MMOConnection<T>) key.attachment();
|
||||||
|
|
||||||
switch (key.readyOps())
|
switch (key.readyOps())
|
||||||
|
Reference in New Issue
Block a user