问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

flush是异步吗java

发布网友 发布时间:2023-04-24 05:10

我来回答

1个回答

热心网友 时间:2023-10-11 08:03

一、基本概念
同步和异步:

同步和异步是针对应用程序和内核的交互而言的。

同步指的是用户进程触发IO 操作并等待或者轮询的去查看IO 操作是否就绪;

而异步是指用户进程触发IO 操作以后便开始做自己的事情,而当IO 操作已经完成的时候会得到IO 完成的通知。

以银行取款为例:

同步 : 自己亲自出马持银行卡到银行取钱(使用同步 IO 时,Java 自己处理IO 读写);

异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO 时,Java 将 IO 读写委托给OS 处理,需要将数据缓冲区地址和大小传给OS(银行卡和密码),OS 需要支持异步IO操作API);

阻塞和非阻塞:阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作方法的实现方式。

阻塞方式下,读取或者写入函数将一直等待;

而非阻塞方式下,读取或者写入方法会立即返回一个状态值。

以银行取款为例:

阻塞 : ATM排队取款,你只能等待(使用阻塞IO时,Java调用会一直阻塞到读写完成才返回);

非阻塞 : 柜台取款,取个号,然后坐在椅子上做其它事,等号广播会通知你办理,没到号你就不能去,你可以不断问大堂经理排到了没有,大堂经理如果说还没到你就不能去(使用非阻塞IO时,如果不能读写Java调用会马上返回,当IO事件分发器通知可读写时再继续进行读写,不断循环直到读写完成)

二、应用方式
2.1 BIO 编程
Blocking IO: 同步阻塞的编程方式。

BIO编程方式通常是在JDK1.4版本之前常用的编程方式。编程实现过程为:

首先,在服务端启动一个ServerSocket来监听网络请求,客户端启动Socket发起网络请求。

默认情况下ServerSocket回建立一个线程来处理此请求,如果服务端没有线程可用,客户端则会阻塞等待或遭到拒绝。

且建立好的连接,在通讯过程中,是同步的。在并发处理效率上比较低。大致结构如下:

同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。

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

使用线程池机制改善后的BIO模型图如下:

2.NIO 编程
Unblocking IO(New IO): 同步非阻塞的编程方式。

NIO本身是基于事件驱动思想来完成的,其主要想解决的是BIO的大并发问题。NIO基于Reactor,当socket有流可读或可写入socket时,操作系统会相应的通知引用程序进行处理,应用再将流读取到缓冲区或写入操作系统。

也就是说,这个时候,已经不是一个连接就要对应一个处理线程了,而是有效的请求,对应一个线程,当连接没有数据时,是没有工作线程来处理的。

NIO的最重要的地方是,当一个连接创建后,不需要对应一个线程,这个连接会被注册到多路复用器上面。所以,所有的连接只需要一个线程就可以搞定,当这个线程中的多路复用器进行轮询的时候,发现连接上有请求的话,才开启一个线程进行处理,也就是一个请求一个线程模式。

在NIO的处理方式中,当一个请求来的话,开启线程进行处理,可能会等待后端应用的资源(JDBC连接等),其实这个线程就被阻塞了,当并发上来的话,还是会有BIO一样的问题

3.AIO编程
Asynchronous IO: 异步非阻塞的编程方式。

与NIO不同,当进行读写操作时,只须直接调用API的read或write方法即可。这两种方法均为异步的,对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知应用程序。即可以理解为,read/write方法都是异步的,完成后会主动调用回调函数。在JDK1.7中,这部分内容被称作NIO.2,主要在java.nio.channels包下增加了下面四个异步通道:AsynchronousSocketChannel、AsynchronousServerSocketChannel、AsynchronousFileChannel、AsynchronousDatagramChannel。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
老师侮辱学生是否犯法 开启河南航拍新篇章 河南省航拍协会第一次会员代表大会召开 我想问下poscer m-3032款型手表售价是多少??? wp6m是啥意思 看图软件哪个好哪个看图软件好 5款强大到离谱电脑软件,都是效率神器!从此远离加班 在武汉买一套房大概要多少钱 武汉华润翡翠城的优缺点 k12教育为什么会被整顿 国家为什么要叫停K12教育? 咨询费用需要按合同进度计算吗 蔚来汽车后段加速动力怎么样 thinkpadl470开机响一段声音 山药豆能泡酒吗?山药豆能打豆浆吗? sata线放在主板上不用 从电脑主机箱拉条sata线出来 不是自己的手机号码 注册的 怎么绑定银行卡 钢铁是怎样炼成的第二章主要写了哪些内容? 圣寿乐的解释 不是自己的手机号码 注册的 怎么绑定银行卡? 《钢铁是怎样炼成的》第二章讲了什么内容? 用别人的手机号申请的,绑定我的银行卡可以吗? 码和手机号码不一样不能绑定银行卡吗? 为啥停止检票后不给退钱? 朝鲜化、古巴化、芬兰化、香港化 小米手机定时闹钟在哪里设置 唐嫣李易峰出席《活色生香》发布会 欢瑞游戏同名手游将上线 dell那款主机用四代cpu 寿礼的解释 寿_的解释寿_的解释是什么 保险经纪人收取手续费作为其收入是否正确? 梦见妈妈出远门的预兆 梦见父母亲出远门的预兆 梦见和母亲出远门旅游的预兆 梦见妈妈女儿出远门死掉的预兆 opporeno6pro触摸震动怎么取消 电话关机是被拉黑了吗 优氧朗芬莱吸顶灯有认证吗 mac录屏如何不把外界声音录进去 义乌哪有零售居家吸顶灯的 【吸顶灯价格】无处不在的光明! 净化灯具厂家盘点 学生台灯什么牌子好 1997年香港回归镀金纪念币15枚发行量二万,现在涨价了吗? 骑士靴怎么选择 骑士靴适合什么人 赵雅芝越老越敢穿,全身上下只穿一件西装,看腿真不像67岁的人 信泰如意守卫加重疾险2021性价比怎么样?靠谱吗? 信泰如意御护无忧重大疾病保险怎么样?靠谱吗? 信泰如意金葫芦初现版重疾险可靠吗?重疾赔付几次? 信泰橙如意重疾险靠谱吗?重疾赔付多少次?