阻塞和非阻塞-同步和异步-BIONIOAIO


1)阻塞和非阻塞

阻塞和非阻塞:阻塞和非阻塞是进程在访问数据的时候,数据内是否准备就绪的一种处理方式,当数据没有准备的时候阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直待在那里。

非阻塞:当我们的进程访问我们的数据缓冲区的时候 数据没有准备好的时候 直接返回 不需要等待,数据有的时候也直接返回

2)同步和异步的方式

同步和异步都是基于应用程序和操作系统处理IO时间锁采用的方式,比如同步应用程序要直接参与IO读写的操作,异步:所有的IO读写交给操作系统去处理 同步的方式在处理IO事件的时候 必须阻塞在某个方法上面等待我们的IO事件完成(阻塞IO事件或则通过轮询IO事件的方式),对于异步来说,所有的IO读写都交给了操作系统 这个时候 我们可以去做其它的事情 并不需要去完成真正的IO操作,当操作完成IO后 给我们应用程序一个通知就可以的。


同步:

1)阻塞到IO事件 阻塞到read或者write 这个时候我们就完全不能做自己的事情,让读写方法加入到线程里面 然后阻塞线程来实现,对线程的性能开销比较大

2)IO事件的轮询  多路复用技术(select模式)

读写事件交给一个单独的线程来处理,这个完成IO事件的注册,还有就是不断的去轮询我们的读写缓冲区 看是否有数据准备好。我们通知相应读写线程,这样的话 以前的读写线程就可以做其他的事情 这个时候阻塞的不是所有的IO线程 阻塞的是select这个线程。

client        select管家         boss

当客人来的时候,就给管家说“我来了”管家得到这个注册信息后,给Boss说 “我这里有一个或者多个客人,boss你去给某人A这件东西,给另外人b这样东西。这个时候,客人是可以自己去做自己的事情的,比如看看花园等等,当管家知道boss给他任务后,她就是去找对应的某人 告诉他boss给他某样东西(根据我们的注册信息)


JavaIO模型

BIO:Jdk1.4以前我们使用的都是BIO 阻塞IO

阻塞到我们的读写方法,阻塞到线程来提供性能,对于线程的开销本来就是性能的浪费。

NIO:jdk1.4 linux多路复用技术(select模式) 实现IO事件的轮询方式:同步非阻塞的模式,这种方式目前是主流网络通信模式。

MIna,netty mina2.0 netty5.0  网络通信框架,比我直接写NIO要容易些 并且代码可读性更好

AIO:jdk1.7 (NIO2)才是真正的异步aio,学习linux epoll模式 AIO使用的比较少,大家可以认真的学习一些思想


小结:

1)BIO阻塞的IO

2)NIO select+非阻塞 同步非阻塞

3)异步非阻塞IO

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
同步非阻塞异步非阻塞是两种不同的函数调用方式。 同步非阻塞是指在发起函数调用后,调用方不会等待函数的结果返回,而是立即继续执行后续的代码。这意味着调用方无需等待函数的执行结果,可以继续处理其他任务。当函数执行完毕后,调用方可以通过轮询或者回调等方式来获取函数的结果。同步非阻塞的优点是能够提高系统的并发性和响应性。 异步非阻塞是指在发起函数调用后,调用方也不会等待函数的结果返回,但是与同步非阻塞不同的是,异步非阻塞会通过回调、事件通知等方式来通知调用方函数的执行结果。调用方可以继续执行其他任务,并在合适的时机处理函数的返回结果。异步非阻塞的优点是能够提高系统的并发性和性能,减少资源的浪费。 总结来说,同步非阻塞异步非阻塞都是在函数调用时不会发生线程阻塞的情况下继续执行后续代码,但区别在于同步非阻塞需要主动轮询或回调来获取函数的结果,而异步非阻塞则通过回调或事件通知等方式传递函数的执行结果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [深入理解同步阻塞同步非阻塞异步阻塞异步非阻塞](https://blog.csdn.net/wangpaiblog/article/details/117236684)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值