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有个共同的地方就是都是同步的
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有个共同的地方就是都是同步的
相关文章推荐
- Java bio nio aio 总结
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- JAVA的BIO/NIO学习总结
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 【转】Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- 详解Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
- Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)