在 Java 中组织多个线程执行器池中的总线程大小

时间:2021-01-15 11:21:56

标签: java multithreading

我正在尝试组织 Spring 应用程序中的总线程数。该项目很旧,许多不同的开发人员创建了线程池来执行那里的线程,以加快不同地方的进程。但不知何故缺少整体管理。

众所周知,服务器硬件的大小不会随着它必须处理的工作量而自动增长。 'Runtime.getRuntime().availableProcessors()' 给出了一个硬限制。

对于一个线程池,您可以使用 availableProcessors 值设置“corePoolSize”和“maxPoolSize”。

一种策略是制定政策:“一个池就足够了”。如果池中达到最大线程数,所有不同的任务将获得相同的池实例并排队。这样可以避免不必要的线程管理并保持单个进程的速度。

我想到的另一个策略是拥有一个整体管理实例,其中不同的池需要动态获得启动新任务的权限。因此,如果池 A 忙于处理最大数量的线程,则池 B 必须等待,直到有足够的处理器容量可用。

问题:是否有一些现有的技术来管理 Java 8 的不同池?

0 个答案:

没有答案