【问题标题】:Spring batch multithreading: throttle-limit impactSpring批处理多线程:油门限制影响
【发布时间】:2017-01-26 10:40:56
【问题描述】:

我有一个多线程 Step,配置了一个 corePoolSize 为 48 个线程的线程池(这是一台大机器),但我没有配置 throttle-limit

我想知道我是否因此一直在使用机器。

Spring Batch 文档说 throttle-limit 是一次可以运行的并发任务的最大数量,默认为 4

我可以在 jconsole 中看到实际上创建了 48 个线程并且它们似乎正在执行(我也可以在我的日志中看到)。

但是,即使我可以看到创建的 48 个线程,throttle-limit of 4 是否意味着这 48 个线程中只有 4 个确实在同时执行工作?

提前谢谢你。

【问题讨论】:

    标签: spring multithreading spring-batch


    【解决方案1】:

    是的,您的理解是正确的,即只有等于油门限制的线程才能同时工作。

    在您的情况下,由于它是一个线程池,因此可以随机选择任何四个线程来完成工作,其余线程将保持空闲状态,但由于线程为这四个任务轮换,因此给人的印象是所有线程正在同时工作。

    corePoolSize 仅表示在作业运行期间要启动和维护的线程数,但这并不意味着所有线程都在同时运行,这意味着您在尝试避免线程创建开销等作业运行。

    您没有共享任何代码或工作结构,因此很难指出更多细节。

    希望对你有帮助!!

    【讨论】:

    • 感谢您的澄清。它确实有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2012-09-02
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多