理解java IO操作中的阻塞非阻塞同步异步

2019-12-19  本文已影响0人  rainmanhhh

以下均以读数据为例进行说明,写数据原理类似

以上1-4统称为同步IO,1为全程同步,2-4第二阶段复制数据的api是同步的

阻塞状态的线程不占用cpu,之所以要减少阻塞是因为阻塞状态的线程不能用于执行其他任务,只能(连同堆栈一起)暂存等待,当并发任务多时线程数就不可避免的暴增,增加了内存使用率和唤醒线程时的CPU上下文切换开销。而反过来,只要线程不阻塞(无论使用同步还是异步api),就可以在不切换上下文的情况下立即进行下一个并发任务,大大提高了效率

上一篇 下一篇

猜你喜欢

热点阅读