从 应对高并发的角度出发, NIO 有必要和多线程一起用吗?

2021-02-24 14:32:02 +08:00
 Joker123456789

从 应对高并发的角度出发,NIO 有必要和多线程一起用吗?

1992 次点击
所在节点    Java
5 条回复
guyeu
2021-02-24 14:37:09 +08:00
NIO 是为了减少线程阻塞,多线程是为了利用多核性能
Jooooooooo
2021-02-24 14:45:58 +08:00
虽然 selector 性能不错, 但并发高了默认的 4 个也不够用.
ljzxloaf
2021-02-24 15:16:05 +08:00
别让 cpu 空闲就行,一般线程数=逻辑核心数(超线程数);但是现在一般不可能让某个服务单独使用一台物理服务器,所以要根据不同的虚拟技术去获取正确的核心数。比如 jdk 在 1.8u131 之前,在 docker 环境下从 Runtime 获取核心数获取到的都是物理机的核心数,如果根据这个值去设置,会增加不必要的线程切换,在并发非常高的情况下会严重影响性能
MXA
2021-02-26 16:06:19 +08:00
所以有了 AIO,不过 AIO 需要更底层的支持,目前好像没有得到广泛支持
liian2019
2021-03-03 18:31:02 +08:00
不然怎么从单 reactor 单线程演变成多 reactor 多线程呢

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

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

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

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

© 2021 V2EX