`
thrillerzw
  • 浏览: 138787 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

bio、nio、bio

    博客分类:
  • java
 
阅读更多

bio: blocking  IO   

nio: Non-blocking  IO       Reactor(反应)模式,事件驱动

aio:  Asynchronous Input/Output       proactor模式,jdk7

 

阻塞与非阻塞,公交车例子:

1. 司机过程中定时询问每个乘客是否到达目的地,若有人说到了,那么司机停车,乘客下车。 ( 类似阻塞式 )

2. 每个人告诉售票员自己的目的地,然后睡觉,司机只和售票员交互,到了某个点由售票员通知乘客下车。 ( 类似非阻塞 )

 

bio:

所能支撑的连接数是有限的,需限制创建线程数量。一连接一线程:accept获取socket后(不一定是真实请求),将socket放入一个线程处理。

 

nio:

Selector

非阻塞 IO 的核心类,它能检测一个或多个通道 (channel) 上的事件,并将事件分发出去。

使用一个 select 线程就能监听多个通道上的事件(Set<SelectionKey> keys=selectionKey.selectedKeys()),并基于事件驱动触发相应的响应。而不需要为每个channel去分配一个线程。

SelectionKey

包含了事件的状态信息(selectionKey.isConnectable())和事件对应的通道的绑定。(selectionKey.channel())

ByteBuffer

ByteBuffer buffer = ByteBuffer.allocate(1024); 

channel

channel.read(buffer)    channel.write(buffer)

java nio简介:http://alicsd.iteye.com/blog/834447

 

 

0
0
分享到:
评论
1 楼 teasp 2013-06-03  
NIO是非阻塞的,不是异步的,AIO才是异步IO

相关推荐

Global site tag (gtag.js) - Google Analytics