Joker123456789
V2EX  ›  Java

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

  •  
  •   Joker123456789 · Feb 24, 2021 · 2689 views
    This topic created in 1908 days ago, the information mentioned may be changed or developed.

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

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