网站建设策划书结束语,网站在线预约模板,长沙公司核名网站,工程设计有限公司BIO (Blocking I/O)#xff1a; Block IO 同步阻塞式 IO #xff0c;传统 IO#xff0c;特点是模式简单、使用方便#xff0c;并发处理能力低。 同步阻塞 I/O 模式#xff0c;数据的读取写入必须阻塞在一个线程内等待其完成#xff0c;在活动连接数不是特别高#xff08…BIO (Blocking I/O) Block IO 同步阻塞式 IO 传统 IO特点是模式简单、使用方便并发处理能力低。 同步阻塞 I/O 模式数据的读取写入必须阻塞在一个线程内等待其完成在活动连接数不是特别高小于单机1000的情况下让每一个连接专注于自己的 I/O 并且编程模型简单不过多考虑系统的过载、限流等问题。 线程池本身就是一个天然的漏斗可以缓冲一些系统处理不了的连接或请求当面对十万甚至百万级连接的时候传统的BIO 模型是无能为力的需要一种更高效的I/O 处理模型来应对更高的并发量
使用场景分析 BIO 方式 适用于连接数目比较小且固定的架构这种方式对服务器资源要求比较高 并发局限于应用中,JDK1.4 之前的唯一选择但程序直观简单易理解如在Apache中使用。 NIO (New I/O) Non IO 同步非阻塞 IO 是传统 IO 的升级客户端和服务器端通过Channel(通道)通讯实现了多路复用。 同步非阻塞 I/O 模型在Java 1.4 中引入了NIO 模型对应java.nio 包提供了ChannelSelectorBuffer等抽象。NIO 中的 N 理解为Non-blocking 不单纯是New。它支持面向缓冲的基于通道的 I/O 操作方法提供了与传统 BIO 模型中的Socket 和 ServerSocket 相对应的SocketChannel 和 ServerSocketChannel 两种不同的套接字通道实现两种通道都支持阻塞和非阻塞两种模式。 阻塞模式使用就像传统中的支持一样比较简单但性能和可靠性都不好 非阻塞模式与之相反。 对于低负载、低并发的应用程序可以使用同步阻塞I/O 来提升开发速率和更好的维护性 对于高负载、高并发的网络应用应使用NIO 的非阻塞模式来开发
使用场景分析 NIO 方式适用于连接数目多且连接比较短轻操作的架构 如聊天服务器并发局限于应用中编程比较复杂JDK1.4 开始支持 如在Nginx、Netty中使用。 AIO (Asynchronous I/O) Asynchronous IO 是 NIO 的升级也叫 NIO 2 实现了异步非堵塞 IO 异步 IO 的操作基于事件和回调机制。 在Java 7 中引入了NIO 的改进版 NIO 2是异步非阻塞的 IO 模型应用操作之后会直接返回不会堵塞在那里当后台处理完成操作系统会通知相应的线程进行后续的操作。 AIO 是异步 IO 的缩写虽然NIO 在网络操作中提供了非阻塞的方法但是NIO 的IO 行为还是同步的业务进程是在 IO 操作准备好时得到通知接着就由这个线程自行进行IO 操作IO 操作本身是同步的
使用场景分析 AIO 方式适用于连接数目多且连接比较长重操作的架构 如相册服务器充分调用OS 参与并发操作编程比较复杂JDK7 开始支持 在成长中AIO 的应用还不广泛Netty 之前尝试使用过 AIO 不过又放弃了