它采用了linux多路复用技术,采用了io轮训方式(时间注册大管家,同步非阻塞)
1多路复用技术(相比BIO多出一个Chanel通道),相当于IO读写的高速公路
Selec.open();
Buffer:缓冲池
put()写数据
Get()读数据
Flip()切换读写模式
Clean()清空缓存
SelectionKey 标示事件类型:(银行柜台那个展示牌)
key.isAccptable();是否可用接受客户端连接
key.isconnectionable();是否可用连接
key.isReadable()
key.isWriteable();
串联
public class NOIServer{
//根据文档定义我们组成部分
private ServerSocketChannel server;
int port=8080;
private Selector selector;
ByteBuffer recBuffer =ByteBuffer.allocate(1024);
//缓冲区
public NIOServer(int port) throws IOException{
this.port=port;
server=
}
public static void main(String args[]){
}
public void listen
Set<SelectionKey> keys=selector.selectedKeys();
Iteratro<SelectionKey> iterator=keys.iterator();
while(iterator.hasNext())
process(iterator.next())
}
private void process(SelectionKey key){
client=server.accept();
client.configureBlocking(false);
client.register(selector,SelectionKey.OP_READ);
else if(key.isValid()&&key.isReable()){
recBuffer.clear();
key.channel();
int len=client.read(recBuffer);
if(len>0){
String msg=new String(recBuffer.array)(,0,len);
seesionMsg.put(key,msg);
client.register(selector,SelectionKey.OP_WRITE);
}else{
}