@Override
		public void run()
		{
			while(!Thread.interrupted())
			{
				Selector sel = _selector;
				
				try
				{
					sel.select();
				}
				catch(IOException e)
				{
					break;
				}
				
				Set<SelectionKey> keys = sel.selectedKeys();
				Iterator<SelectionKey> iter = keys.iterator();
				
				while(iter.hasNext())
				{
					SelectionKey key = iter.next();
					
					synchronized(_channelLock)
					{
						if(key.isValid())
						{
							SelectableChannel ch = _channelMapBySelKey.get(key);
							
							if(ch != null)
							{
								ch.select(ChannelSelector.this);
							}
						}
					}
				}
			}
		}