Spring批量多线程:限制油门限制

时间:2017-01-26 10:40:57

标签: spring multithreading spring-batch

我有一个多线程步骤配置了一个带有48个线程的corePoolSize的线程池(它是一台大机器),但我没有配置限制范围

我想知道我是否因此而未能使用机器。

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

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

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

提前谢谢。

1 个答案:

答案 0 :(得分:2)

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

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

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

您尚未共享任何代码或工作结构,因此很难指出任何更具体的细节。

希望它有所帮助!!