多线程基础nio和bio

实际上io之间的差别仅仅只有是否阻塞,以及是否同步

同步/异步是消息通信机制,也就是调用者如何获取结果,同步是指调用者调用方法之后等待到结果出现才返回,异步则是调用者调用方法之后立即返回,结果是被调用者通过类似于观察者模型的方法被动获得结果

阻塞/非阻塞是对等待结果这段时间线程的状态来讲的,注意,同步不一定是阻塞的,异步不一定是非阻塞的,得到结果之前线程一直有一条线程在等待,就是阻塞的,而如果得到结果之前并没有线程在等待,则是非阻塞的,典型的同步非阻塞就是等待结果的同时,线程进入休眠,直到结果出现才进行处理,如使用sleep进行睡眠,而典型的异步阻塞就是在直接返回结果的同时,留下一个线程等待和处理io

bio也就是传统的阻塞同步io一般使用多线程进行操作(因为每一条线程都会阻塞并等待),而这种一问一答的操作形式会导致当面对大量访问时会创建和销毁大量线程,浪费性能,甚至由于创建和销毁浪费了大量性能,造成内存溢出或宕机

bio还有变种,伪异步bio,采用线程池和消息队列的方式,将大量请求放入消息队列中,使用线程池的方式,在不大量创建销毁线程的前提下,对其进行处理,从表面上看确实达成了异步,但是由于底层仍然是阻塞同步式的,在面临大量请求时仅仅只能解决对性能的浪费和宕机,无法从根本上提高处理效率

nio可以认为是bio的升级版,他的底层仍然是bio,但是nio对其进行了优化,使其成为了非阻塞式同步io,最重要的就是nio内部的缓冲和轮询机制,我们知道,对于bio来说,必须要两个线程一直监听io中是否有新的字节流,

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值