我正在尝试组织 Spring 应用程序中的总线程数。该项目很旧,许多不同的开发人员创建了线程池来执行那里的线程,以加快不同地方的进程。但不知何故缺少整体管理。
众所周知,服务器硬件的大小不会随着它必须处理的工作量而自动增长。 'Runtime.getRuntime().availableProcessors()' 给出了一个硬限制。
对于一个线程池,您可以使用 availableProcessors 值设置“corePoolSize”和“maxPoolSize”。
一种策略是制定政策:“一个池就足够了”。如果池中达到最大线程数,所有不同的任务将获得相同的池实例并排队。这样可以避免不必要的线程管理并保持单个进程的速度。
我想到的另一个策略是拥有一个整体管理实例,其中不同的池需要动态获得启动新任务的权限。因此,如果池 A 忙于处理最大数量的线程,则池 B 必须等待,直到有足够的处理器容量可用。
问题:是否有一些现有的技术来管理 Java 8 的不同池?