Java NIO 到底是异步还是同步,阻塞还是非阻塞?

2018-07-29 14:04:52 +08:00
 wanderlustLee

今天刚刚学习 NIO,网上看了好多资料,有说是异步阻塞的,还有说是同步非阻塞的。好像是因为关注点不同,select 线程是阻塞的?对多个流处理又是非阻塞的?有大神来解释一下吗。。。

10376 次点击
所在节点    Java
24 条回复
wanderlustLee
2018-07-30 09:41:11 +08:00
@hecz epoll 中不是会有事件通知线程吗?这种行为和真正的异步区别在哪里...
lhx2008
2018-07-30 09:49:36 +08:00
@wanderlustLee 线程是死循环,做别的事情要异步封装事件到线程的任务队列
wanderlustLee
2018-07-30 10:32:28 +08:00
@lhx2008 也就是说 java 中的普通 NIO 是同步的,netty 中对 NIO 进行了异步实现吗?
hecz
2018-07-31 00:09:45 +08:00
@wanderlustLee 其实通知你是告诉你内核准备好了,你取数据的时候还是需要将内核中的数据拷贝到用户空间中。这段时间进程是会阻塞的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/475074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX