Java NIO API

http://www.blogjava.net/19851985lili/articles/93524.html

 

NIO 详解:

    NIO主要包括两个部分:java.nio.channels包介绍Selector和Channel抽象,java.nio包介绍Buffer抽象。

 

 

http://www.cnblogs.com/phoebus0501/archive/2010/12/05/1897245.html

4) Selector小结

    总的来说,使用Selector的步骤如下:

1、 创建一个Selector实例。

2、 将其注册到各种信道,指定每个信道上感兴趣的I/O操作。

3、 重复执行:

1) 调用一种select方法

2) 获取选取的键列表

3) 对于已选键集中的每个键。

a.  获取信道,并从键中获取附件(如果合适的话)

b.  确定准备就绪的操作并执行。如果是accept操作,将接受的信道设置为非阻塞模式,并将其与选择器注册。

c.  如果需要,修改键的兴趣操作集

d.  从已选键中移除键

如果选择器告诉了你什么时候I/O操作准备就绪,你还需要非阻塞I/O吗?答案是肯定的。信道在已选键集中的键并不能确保非阻塞I/O,因为调用了 select()方法后,键集信息可能会过时。另外,阻塞式写操作会阻塞等待直到写完所有字节,而就绪集中的OP_WRITE仅表示至少有一个字节可写。 实际上,只是非阻塞模式的信道才能与选择器进行注册:如果信道在阻塞模式,SelectableChannel类的register()方法将抛出 IllegalBlockingModeException异常。

你可能感兴趣的:(java NIO)