美文网首页
--java-IO模型

--java-IO模型

作者: with_dream | 来源:发表于2022-05-10 01:24 被阅读0次

一、概述

IO的方式通常分为同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO

同步和异步 是针对应用程序和内核的处理方式不同。同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪;异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。
阻塞和非阻塞 是针对于进程在读写数据时的处理方式不同。当一个线程在读/写时,当数据完全被读取/写入或者数据没有准备好时,阻塞方式下线程在读取或者写入时将一直等待;非阻塞方式下,线程可以做其他任务。
所以, 按照以上角度,I/O模型可以分为:同步阻塞的BIO,同步多路复用非阻塞的NIO,异步阻塞的伪异步IO,异步非阻塞的AIO。

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O(NIO),而Proactor运用于异步I/O操作(BIO)。 Java共支持3种网络编程模型/IO模式:BIO、NIO、AIO。

二、BIO

在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。

阻塞式IO需要单独的线程取处理一个请求和读写,所以需要使用多线程去处理。当请求过多时导致线程过多,比较消耗内存

socket建立原理
https://www.csdn.net/tags/MtTaMg5sMDMyMzE1LWJsb2cO0O0O.html

三、NIO

https://www.jianshu.com/p/ccb85c693774

四、AIO

五、总结

BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。

NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。

AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

参考

https://blog.csdn.net/lixinkuan328/article/details/114156483

相关文章

  • --java-IO模型

    一、概述 IO的方式通常分为同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO 同步和异步 是针对应用程序和...

  • JAVA-IO(二)

    JAVA-IO(二) sschrodinger 2019/05/21 引用 Java se 1.8 api JAV...

  • Thinking in Java - Java-IO系统笔记

    title: Java-IO系统笔记date: 2017-04-03 11:14:30categories: Ja...

  • JAVA-IO(一)

    JAVA-IO(一) sschrodinger 2019/05/21 引用 聊聊同步、异步、阻塞与非阻塞 - 猿码...

  • JAVA-IO(三)

    JAVA-IO(三) sschrodinger 2019/05/22 引用 长着胡萝卜须的栗子博客 Java ni...

  • 8. Java-IO模型(BIO、NIO、AIO)

    1. IO认识 IO简单来说就是读和写,有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。说到IO...

  • java-IO

    1、什么是IO流? 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为...

  • Java-IO

    IO:Java数据的 输入\输出 数据流:根据流向分为输入流(InputStream\Reader)和输出流(Ou...

  • Java-IO/NIO

    java.io包下包含输入流和输出流,每种流又分为字节流和字符流两类,字节流支持以byte(8位)为单位进行操作,...

  • Java-IO详解

    IO概览 字节流与字符流的区别字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用...

网友评论

      本文标题:--java-IO模型

      本文链接:https://www.haomeiwen.com/subject/gfkvyrtx.html