mikael
V2EX  ›  Java

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

  •  2
     
  •   mikael · Feb 8, 2021 · 6942 views
    This topic created in 1919 days ago, the information mentioned may be changed or developed.

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

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

    感觉一般的小项目,不考虑多线程一样完成。小项目就是实现业务即可,谁管你怎么实现的。
    cnzjl
        21
    cnzjl  
       Feb 9, 2021
    好多场景呢,批量处理任务,批量下游发送
    Aaronsunny
        22
    Aaronsunny  
       Feb 9, 2021
    好多吧。
    wangkai0351
        23
    wangkai0351  
       Feb 9, 2021
    早期(十几年前)做 Windows 应用软件开发程序员的基本功吧
    haon
        24
    haon  
       Feb 9, 2021
    异步任务用的比较多
    TeeMoCode
        25
    TeeMoCode  
       Feb 9, 2021
    用到过,比如说从对象服务器上使用线程池下载多个文件,所有文件下载完后再进行后续处理;耗时而又无需前端感知的任务丢到线程池中异步完成
    cabing
        26
    cabing  
       Feb 18, 2021
    异步解耦必用吧。
    线程池是基本的吧,都封装成包了。
    SkyLine7
        27
    SkyLine7  
       Feb 19, 2021
    @stevenkang 学习了!
    sss666
        28
    sss666  
       Feb 20, 2021
    resttemplate,异步任务
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1200 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    ♥ Do have faith in what you're doing.