您的位置:首页 > 编程语言 > Java开发

Java BIO,NIO理论总结

2013-04-02 17:30 281 查看
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO
BIO情况下,能支持的连接数有限,一般都采取accept获取Socket以后采用一个thread来处理,one connection one thread。无论连接是否有真正数据请求,都需要独占一个thread,这一定程度上造成了资源浪费。
建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。
NIO的最重要的地方是当一个连接创建后,不需要单独一个线程,这个连接首先会被注册到多路复用器上面,所以所有的连接只需要一个线程就可以搞定,当这个线程中的多路复用器进行轮询的时候,发现连接上有请求的话,才开启一个线程进行处理,也就是一个请求一个线程模式。
即NIO Server端通常由一个thread来监听connect事件,另外多个thread来监听读写事件。这样做的好处某个连接有请求的时候才会创建thread来处理,即one request one thread。这种方式在很大程度上节约的资源。

BIO与NIO最大的不同是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程,所有连接(Connect)共用一个线程。
总结:BIO是一个连接一个线程。NIO是一个请求一个线程。AIO是一个有效请求一个线程。

最后记住:BIO与NIO有个共同的地方就是都是同步的



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: