2010-05-13 38 views
3

我有一个问题,它与Java中ExecutorService的可能开销有关。当新类型的线程运行时,会有更大的线程池或额外的ExecutorService?

本实现具有ExecutorService A,容量为5个线程。

  • 它运行A类型的线程。
  • 类型A线程做一些数据库读写。现在

B类型的线程将运行A类型的一些线程已经完成。

  • 类型B将运行的线程的数量是不同的时间。
  • 类型B线程做一些文件系统IO(不是数据库)。

所以我应该

  • 添加新ExecutorService处理类型B螺纹
  • 或者我应该增加ExecutorService A容量和运行型B线程与一个呢?

我在想Java可能会有一些额外的开销,有两个ExecutorService s,但另一方面线程的总数会增加。这有什么关系吗?

回答

4

我会推荐两个ExecutorServices,那么你可以利用java.util.concurrent包提供的不同ExecutorService

它使代码更容易,开销可以忽略。

  • ExecutorService一个固定线程池设置为五个线程。
  • ExecutorService b带有缓存线程池。
+0

我会尝试缓存线程池,谢谢! – 2010-05-14 01:02:13

1

如果你在谈论5个线程,并且你没有耗尽你的线程池容量,我会倾向于说任何一种方式的开销都是微不足道的,你应该去任何你认为最简单的东西路线。

+0

推理很有意义。我会做另一个ExecutorService,因为它感觉就像更干净的代码一般。 – 2010-05-13 10:03:34

相关问题