java NIO 实现非阻塞socket通信

本文介绍了Java NIO中的Selector如何用于非阻塞式Socket通信。Selector可以监控多个SelectableChannel的IO状态,包括已注册、被选择和被取消的集合。关键方法如select()、select(long timeout)和selectNow()用于检查IO事件。通过SelectableChannel的configureBlocking()方法切换阻塞模式,isBlocking()检查当前模式。服务器端通过ServerSocketChannel监听客户端连接,设置非阻塞并注册到Selector,实现高效IO处理。
摘要由CSDN通过智能技术生成

java的nio为非阻塞式socket通信提供了如下几个类:

          Selector : 它是SelectableChannel对象的多路复用器,所有希望采用非阻塞方式进行通信的channel都应该注册到Selector对象。可以通过调用此类的open()静态方法来创Selector实例,该方法将使用系统默认的Selector来返回新的Selector。 

Selector可以同时监控多个SelectortableChannel的IO状况,是非阻塞IO的核心。一个Selector实例有3个SelectIonKey集合

   1.所有的SelectionKey集合:代表了注册在该Selector上的Channel,该集合可以通过keys()方法返回。

   2.被选择的SelectionKey集合 : 代表了所有可通过select()方法获取的,需要进行IO处理的Channel,这个集合可以通过selectedKeys()返回。

   3.被取消的SelectionKey集合:代表了所有被取消注册关系的Channel,在下一次执行select()方法时,这些Channel对应的SelectionKey会被彻底删除,程序通常无须

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值