您的位置 首页 java

Java中的IO方式

主要分为3种:BIO(同步阻塞)、NIO(同步非阻塞)和AIO(异步非阻塞)

BIO

同步阻塞模式。在JDK1.4以前,使用Java建立网络连接时,只能采用BIO方式,在服务器端启动一个ServerSocket,然后使用accept等待客户端请求,对于每一个请求,使用一个线程来进行处理用户请求。线程的大部分时间都在等待请求的到来和IO操作,利用率很低。而且线程的开销比较大,数量有限,因此服务器同时能处理的连接数也很低。

NIO

BIO模式中,是“一个Socket一个线程”;而在NIO中则是使用单个或少量的线程来轮询Socket,当发现Socket上有请求时,才为请求分配线程。因此是“一个请求一个线程”。

具体实现就是把Socket通过Channel注册到Selector,使用一个线程在Selector中轮询,发现Channel有读写的事件,就可以分配给其他线程来处理(通常使用线程池)。

AIO

从JDK7开始支持AIO模式。通过AsynchronousServerSocketChannel中注册事件回调函数来处理业务逻辑。当IO操作完成以后,回调函数会被调用。如果传入AsynchronousChannelGroup,可以绑定线程池来处理事件。

关于JDK的实现,Windows平台基于IOCP实现AIO,Linux只有eppoll模拟实现了AIO。

用一句话来总结这三种IO的区别:

  • BIO是一个连接一个线程。
  • NIO是一个请求一个线程。
  • AIO是一个有效请求一个线程。

文章来源:智云一二三科技

文章标题:Java中的IO方式

文章地址:https://www.zhihuclub.com/174197.shtml

关于作者: 智云科技

热门文章

网站地图