首页 > 编程语言 > 详细

javaNIO

时间:2019-12-05 19:47:46      阅读:83      评论:0      收藏:0      [点我收藏+]

Java New IO

 

  1. 基于双向读写通道Channel和缓冲Buffer
  2. 非阻塞式  (线程处理读写时依然可以非阻塞的做其他事情)
  3. 选择器Selectors   单个线程用于监听多个通道的事件(连接事件,读取事件等)

 

Selector感兴趣的事件

SelectionKey.OP_ACCEPT();

SelectionKey.OP_CONNECT();

SelectionKey.OP_READ();

SelectionKey.OP_WRITE();

 

 

 init()

  1. 创建Selector对象

Selector selector=Selector.open();

  1. 创建Channel通道,设置非阻塞

ServerSocketChannel channel=ServerSocketChannel.open();

channel.configureBlocking(false);

  1. 绑定通道,给上端口

ServerSocket socket=channel.socket();

socket.bind(new InetSocketAddress(port));

  1. Selector中注册感兴趣事件

socket.register(selector,SelectionKey.OP_ACCEPT);

  1. 处理事件

 

Listen()

while(true){

  1. 当注册事件到达时方法返回,否则一直阻塞  

selector.select();

  1. 用迭代器接收注册事件

Iterator i=selector.selectedKeys().iterator();

  1. 处理每一个事件

While(i.hasNext()){

SelectionKey key=i.next();

i.remove();

 

If(key.isAcceptable()){

}else if(key.isReadable()){

}

}

 

read(SelectionKey key)

 

 

 

}

javaNIO

原文:https://www.cnblogs.com/ttaall/p/11991300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!