大家在实际开发中真正使用过线程池吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mikael
V2EX    Java

大家在实际开发中真正使用过线程池吗?

  •  2
     
  •   mikael 2021-02-08 16:01:22 +08:00 6575 次点击
    这是一个创建于 1755 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人实际开发中就使用了一两次的线程池开发,主要就是开启线程读取数据库的操作。不知道大家有没有这方面的实际场景介绍下

    28 条回复    2021-02-20 17:10:10 +08:00
    ElmerZhang
        1
    ElmerZhang  
       2021-02-08 16:03:54 +08:00
    同时从多个下游服务取数据,用线程池并行取。
    SWALLOWW
        2
    SWALLOWW  
       2021-02-08 16:05:26 +08:00
    批量扫串口
    ferock
        3
    ferock  
    PRO
       2021-02-08 16:06:41 +08:00
    池不一定。多线程经常用。。。多线程,爬基金数据,多线程扫描端口
    itechify
        4
    itechify  
    PRO
       2021-02-08 16:06:49 +08:00 via Android
    一些异步 job 会用上
    chendy
        5
    chendy  
       2021-02-08 16:08:11 +08:00
    定时拉数据,数据量不是很大不需要上更严谨的任务框架,就线程池跑
    yamasa
        6
    yamasa  
       2021-02-08 16:18:47 +08:00
    Java 现在搞并发的选择并不算很多,线程池就是一种典型的,池化思想其实应用很广泛。搞并发可以上 reactor,vertx (也是 actor 模式的实现),线程池。即便是 reactor java 本身,底层也是要用到线程池来实现所有异步操作的。在 loom 的 fiber 真正出在 lts 之前,我觉得这个现状不会改变太多。协程也不是什么场景都优于线程的。
    应用场景可太多了啊,说的完? web 服务肯定是并发的,无非是应用哪种 IO 模型的问题而已。线程池可以说无处不在。
    Jooooooooo
        7
    Jooooooooo  
       2021-02-08 16:20:17 +08:00   1
    最常见的就是批量调下游
    wolfie
        8
    wolfie  
       2021-02-08 16:26:47 +08:00
    接口不影响返回结果且执行时间长的扔异步,定时任务。
    java8
        10
    java8  
       2021-02-08 16:51:03 +08:00
    消息推送
    stevenkang
        11
    stevenkang  
       2021-02-08 17:08:17 +08:00   2
    1 、批量查询类,如接口方不支持批量查询,自己封装一个稍微改善一下;
    2 、比较耗时又不是很重要的数据处理,如日志记录到数据库或者通过网络传输记录,可以开一个线程慢慢写,不影响主线程;
    3 、聚合多个 RPC 接口数据,比如要查 10 个接口,平均每个接口 500 毫秒的话,不开线程查的话主线程就超过 5000 了。这种直接整上 10 个线程啥的并行查询,主线程平均仅需 500 毫秒就能返回结果。
    4 、
    guoyuchuan
        12
    guoyuchuan  
       2021-02-08 17:13:57 +08:00
    1. 异步处理,将整体流程中的一些任务进行异步处理,可以使用线程池
    2. 针对某些资源,最近我们遇到的 sftp,就需要池化技术;
    presto
        13
    presto  
       2021-02-08 17:19:01 +08:00
    批处理异步并发查询 Presto,并且根据业务转发到不同的 Presto 集群查询
    presto
        14
    presto  
       2021-02-08 17:20:50 +08:00
    @stevenkang 我们就是这么做的查询报表 SQL,一个 SQL 随便加载数据就 TB 了
    mikael
        15
    mikael  
    OP
       2021-02-08 18:05:37 +08:00
    @yamasa 我知道线程池无处不在,只是小弟我接触的面不多,所以想向各位老哥了解一下大家使用的场景
    daozhihun
        16
    daozhihun  
       2021-02-08 19:34:57 +08:00
    这个用的还是挺多的,我最近在做的东西,我就用了好几种不同的线程池
    incompatible
        17
    incompatible  
       2021-02-08 20:43:40 +08:00 via iPhone
    @stevenkang 第三个场景使用线程池有效的前提是主线程并发不能高,否则当线程池的线程被占满后,由主线程发起的异步任务依然要排队执行,起不到通过并行加速的效果
    zqjnew
        18
    zqjnew  
       2021-02-08 20:52:09 +08:00 via Android   1
    可以把繁杂的计算交给固定数量线程池, 繁杂的 io 交给自动增长的线程池
    kingfalse
        19
    kingfalse  
       2021-02-08 20:59:19 +08:00 via Android
    爬虫开发,请求解析这些,全在线程池
    gaigechunfeng
        20
    gaigechunfeng  
       2021-02-08 22:21:21 +08:00
    强行在一个 app 上用过一次,还出了好几个 bug 。。。

    感觉一般的小项目,不考虑多线程一样完成。小项目就是实现业务即可,谁管你怎么实现的。
    cnzjl
        21
    cnzjl  
       2021-02-09 07:47:25 +08:00
    好多场景呢,批量处理任务,批量下游发送
    Aaronsunny
        22
    Aaronsunny  
       2021-02-09 09:30:53 +08:00
    好多吧。
    wangkai0351
        23
    wangkai0351  
       2021-02-09 09:42:47 +08:00
    早期(十几年前)做 Windows 应用软件开发程序员的基本功吧
    haon
        24
    haon  
       2021-02-09 15:33:32 +08:00
    异步任务用的比较多
    TeeMoCode
        25
    TeeMoCode  
       2021-02-09 15:45:11 +08:00
    用到过,比如说从对象服务器上使用线程池下载多个文件,所有文件下载完后再进行后续处理;耗时而又无需前端感知的任务丢到线程池中异步完成
    cabing
        26
    cabing  
       2021-02-18 11:16:48 +08:00
    异步解耦必用吧。
    线程池是基本的吧,都封装成包了。
    SkyLine7
        27
    SkyLine7  
       2021-02-19 11:03:22 +08:00
    @stevenkang 学习了!
    sss666
        28
    sss666  
       2021-02-20 17:10:10 +08:00
    resttemplate,异步任务
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     938 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:31 PVG 07:31 LAX 15:31 JFK 18:31
    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