V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Joker123456789
V2EX  ›  Java

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

  •  
  •   Joker123456789 · 2021-02-24 14:32:02 +08:00 · 1967 次点击
    这是一个创建于 1374 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    5 条回复    2021-03-03 18:31:02 +08:00
    guyeu
        1
    guyeu  
       2021-02-24 14:37:09 +08:00
    NIO 是为了减少线程阻塞,多线程是为了利用多核性能
    Jooooooooo
        2
    Jooooooooo  
       2021-02-24 14:45:58 +08:00
    虽然 selector 性能不错, 但并发高了默认的 4 个也不够用.
    ljzxloaf
        3
    ljzxloaf  
       2021-02-24 15:16:05 +08:00
    别让 cpu 空闲就行,一般线程数=逻辑核心数(超线程数);但是现在一般不可能让某个服务单独使用一台物理服务器,所以要根据不同的虚拟技术去获取正确的核心数。比如 jdk 在 1.8u131 之前,在 docker 环境下从 Runtime 获取核心数获取到的都是物理机的核心数,如果根据这个值去设置,会增加不必要的线程切换,在并发非常高的情况下会严重影响性能
    MXA
        4
    MXA  
       2021-02-26 16:06:19 +08:00
    所以有了 AIO,不过 AIO 需要更底层的支持,目前好像没有得到广泛支持
    liian2019
        5
    liian2019  
       2021-03-03 18:31:02 +08:00
    不然怎么从单 reactor 单线程演变成多 reactor 多线程呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5535 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 08:41 · PVG 16:41 · LAX 00:41 · JFK 03:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.