
从 应对高并发的角度出发,NIO 有必要和多线程一起用吗?
1 guyeu Feb 24, 2021 NIO 是为了减少线程阻塞,多线程是为了利用多核性能 |
2 Jooooooooo Feb 24, 2021 虽然 selector 性能不错, 但并发高了默认的 4 个也不够用. |
3 ljzxloaf Feb 24, 2021 别让 cpu 空闲就行,一般线程数=逻辑核心数(超线程数);但是现在一般不可能让某个服务单独使用一台物理服务器,所以要根据不同的虚拟技术去获取正确的核心数。比如 jdk 在 1.8u131 之前,在 docker 环境下从 Runtime 获取核心数获取到的都是物理机的核心数,如果根据这个值去设置,会增加不必要的线程切换,在并发非常高的情况下会严重影响性能 |
4 MXA Feb 26, 2021 所以有了 AIO,不过 AIO 需要更底层的支持,目前好像没有得到广泛支持 |
5 liian2019 Mar 3, 2021 不然怎么从单 reactor 单线程演变成多 reactor 多线程呢 |