“处理的慢?那再加 500 个线程!” - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yxaaa123
V2EX    Java

“处理的慢?那再加 500 个线程!”

  •  
  •   yxaaa123 Aug 11, 2016 7554 views
    This topic created in 3546 days ago, the information mentioned may be changed or developed.

    这样加线程。。。。真的合适吗?

    38 replies    2016-08-12 09:21:07 +08:00
    wizardforcel
        1
    wizardforcel  
       Aug 11, 2016
    没那么多核也没用啊。
    jimzhong
        2
    jimzhong  
       Aug 11, 2016
    对于运算密集型的场合一般是不合适的
    UnisandK
        3
    UnisandK  
       Aug 11, 2016
    这是给太湖之光在写程序吗
    feilaoda
        4
    feilaoda  
       Aug 11, 2016
    不合适
    除非你机器 nb 的不行
    wander2008
        5
    wander2008  
       Aug 11, 2016 via iPhone
    这么说的,对多线程理解比较初级
    sarike
        6
    sarike  
       Aug 11, 2016
    同时在加 500 个核,是好使的。
        7
    tabris17  
       Aug 11, 2016   2
    建议总线程数=CPU 内核数*2+1
    tabris17
    mko0okmko0
        8
    mko0okmko0  
       Aug 11, 2016   3
    最佳公式不是相同任务的线程=((cpu 核心数量 x2)+1)吗?
    线程太多切换线程本身就有虚耗.
    qzy168
        9
    qzy168  
       Aug 11, 2016
    啥服务器有那么多线程呀?云计算吗?
    zhuangzhuang1988
        10
    zhuangzhuang1988  
       Aug 11, 2016
    先 visutalstudio 性能分析一下..
    domty
        11
    domty  
       Aug 11, 2016
    没用吧,核心不够多线程间切换的开销反而更浪费资源
    just4test
        12
    just4test  
       Aug 11, 2016
    @tabris17 为什么是这个数量?
    tabris17
        13
    tabris17  
       Aug 11, 2016
    @just4test 经验公式
    harry890829
        14
    harry890829  
       Aug 11, 2016
    为什么不是用多进程……
    zmj1316
        15
    zmj1316  
       Aug 11, 2016
    遇到过大量加线程性能提升的现象,最后发现其实是线程负载不均衡,先结束的线程在等待,所以疯狂加效果显著,虽然切换损失也很大。最后把负载均衡就正常了,建议跑个 profiler 看看
    em70
        16
    em70  
       Aug 11, 2016   1
    饭不够吃?再给你拿双筷子吧
    hush
        17
    hush  
       Aug 11, 2016
    1 个女人怀胎 10 月生一个小孩, 10 个女人怀 1 个月就能生了么
    ArthurKing
        18
    ArthurKing  
       Aug 11, 2016
    线程不是越多越好,也不是绝对的跟 cpu 核数相关。在考虑开多少个线程时,最重要的一个因素就是资源争用度。
    justfly
        19
    justfly  
       Aug 11, 2016
    不是 IO 密集的,加线程起副作用; IO 密集的,线程数量也不是越多越好,有一个最佳值,要看具体业务。

    PS : Java 的 web 生态里面貌似并没有意愿使用 单线程或少量线程 + IO 多路复用 的策略来提高资源利用率,很奇怪。
    ZE3kr
        20
    ZE3kr  
       Aug 11, 2016 via iPhone
    @just4test 应该是线程数=核数就够了,不过一些芯片已经能超线程了能跑的线程就是核数*2 ,当线程到这个数量速度才最快。
    21grams
        21
    21grams  
       Aug 11, 2016 via Android
    要看具体场景,不见得就没用
    zwh8800
        22
    zwh8800  
       Aug 11, 2016
    对于 io 密集的任务,这样是可行的。运算密集的就得跟核数相关了。
    cocalrush
        23
    cocalrush  
       Aug 11, 2016 via Android
    @zwh8800 正解
    SlipStupig
        24
    SlipStupig  
       Aug 11, 2016
    首先要看算什么任务,如果是运算密集型不会有丝毫的作用, IO 密集型是有帮助的,线程本质是强占 CPU 时间,但是 CPU 本身要切换线程的话,需要更多消耗内核资源,这个时候线程切换时间会特别长,内核维护线程的列表会更大,在机器不够强的时候可能连正常运行都成问题
    DRcoding
        25
    DRcoding  
       Aug 11, 2016   1
    @hush 但是你要是想生 10 个猴子,一个女人得生 10 次,但是你也可以让 10 个女人同时怀上生一次,:)
    coldear
        26
    coldear  
       Aug 11, 2016
    先 profile ,找瓶颈
    yxaaa123
        27
    yxaaa123  
    OP
       Aug 11, 2016
    现在程序启动后有 700 多个线程, Redis Client 有 600 。。。。不知道说啥好, php 程序员写 java 就会这样,遇到好几个了
    jhaohai
        28
    jhaohai  
       Aug 11, 2016 via iPhone
    如果是阻塞式的加线程可能有用
    seeker
        29
    seeker  
       Aug 11, 2016
    楼上都跑偏了,楼主其实是吐槽外行老板 or 甲方。
    jasontse
        30
    jasontse  
       Aug 11, 2016 via iPad
    看 CPU 利用率和线程阻塞时长
    yxaaa123
        31
    yxaaa123  
    OP
       Aug 11, 2016
    @seeker 是的。。
    iyangyuan
        32
    iyangyuan  
       Aug 11, 2016 via iPhone
    也不一定没用,最起码抢占 CPU 的竞争力加强了
    petelin
        33
    petelin  
       Aug 11, 2016 via Android
    @SlipStupig 系统启动的时候就已经有那么多线程了,对于阻塞很强的多开十几个没事吧?
    williamx
        34
    williamx  
       Aug 11, 2016
    是不是合适得看实际的情况。
    SlipStupig
        35
    SlipStupig  
       Aug 11, 2016
    @petelin 只要你线程切换不频繁就没事
    jimages
        36
    jimages  
       Aug 11, 2016 via Android
    读写的慢?分成 500 个文件。
    8023
        37
    8023  
       Aug 12, 2016
    “处理的慢?那再加 500 台电脑!”
    yzl0208994
        38
    yzl0208994  
       Aug 12, 2016
    如果 IO 密集型似乎可以,如果是 CPU 密集型就变慢了
    About     Help     Advertise     Blog     API     FAQ     Solana     3219 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 188ms UTC 14:07 PVG 22:07 LAX 07:07 JFK 10:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86