这代码,会往死里循环, isReadable事件这个好像移不掉是的,
在客户端用的是socket连上去发一个字符就close掉了,  但是在服务器里面的read事件就永远有。package com.server.core;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.net.InetSocketAddress;
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.Set;public class Server {
private Selector selector;
private ServerSocketChannel serverSocketChannel;
private SocketChannel socketChannel;
{
try{
selector=selector.open();
serverSocketChannel=serverSocketChannel.open();
}catch(Exception ex){

}
}
public void start(int port)throws Exception{
serverSocketChannel.socket().bind(new InetSocketAddress(port));
serverSocketChannel.configureBlocking(false);
serverSocketChannel.register(selector,SelectionKey.OP_ACCEPT);
Iterator<SelectionKey>keys;
int count;
while(true){
count=selector.select();
keys=selector.selectedKeys().iterator();
for(;keys.hasNext();){
processSelectionKey(keys.next());
keys.remove();
}

}
}
private void processSelectionKey(SelectionKey key)throws Exception{
if(key.isAcceptable()){
socketChannel=serverSocketChannel.accept();
socketChannel.configureBlocking(false);
socketChannel.register(selector, key.OP_READ);
}else if(key.isReadable()){
socketChannel=(SocketChannel)key.channel();

System.out.println("一下子,我读取了数据 ");
}
}
public static void main(String[]args)throws Exception{
new Server().start(889);
}
}