当新类型的线程运行时,更大的线程池或额外的 ExecutorService ?
-
26-09-2019 - |
题
我有一个与可能的开销有关的问题 ExecutorService
Java 中的 s。
目前的实施有 ExecutorService A
容量为5个线程。
- 它运行类型的线程
A
. - 类型
A
线程执行一些数据库读取和写入操作。
现在,一个线程类型 B
将追随 一些 线程类型 A
已完成。
- 类型数量
B
将运行的线程有时会有所不同。 - 类型
B
线程执行一些文件系统 IO(不是数据库)。
我也应该这样
- 添加一个新的
ExecutorService
处理类型B
线程 - 或者我应该增加容量
ExecutorService A
和运行类型B
也与那个线程有关吗?
我认为 Java 有两个可能会产生一些额外的开销 ExecutorService
s,但另一方面线程总数无论如何都会增加。这有什么关系吗?
解决方案
我会推荐两个 ExecutorServices
, ,那么您可以利用不同的 ExecutorService
提供的 java.util.concurrent
包裹。
它使代码更容易并且开销可以忽略不计。
ExecutorService
a 将固定线程池设置为五个线程。ExecutorService
b 带有缓存线程池。
其他提示
如果您谈论的是 5 个线程,并且您没有耗尽线程池容量,那么我倾向于说,无论哪种方式,开销都是微不足道的,您应该采用您认为最简单的路线。
不隶属于 StackOverflow