2011-04-11 34 views
2

我正在使用线程池在我的应用程序的后台执行任务。但是,我的一些任务比其他任务重。所以我想将繁重的任务限制在线程池的某个子集中,因此至少要打开几个线程才能执行任何轻量级任务。如何限制任务使用线程池中的所有线程?

有没有简单的方法来做到这一点?

+5

使用两个线程池。 – khachik 2011-04-11 18:44:28

回答

0

正如前面所说,最简洁的方法是对重线程使用单独的线程池。

另一种方法是使用信号量。创建一个数量为3的信号量。重线程必须首先获取()。只有三个重的人能够这样做。其余的将等待(或失败,如果你使用tryAcquire())。

当然,线程需要“知道”它是一个“重”的线程。对于第三方线程无效,请再次参阅“双池”方法。 :-)

1

最简单的方法是为不同的“任务权重”使用单独的线程池。

即使您可以创建单独的类,为不同的任务提供单独的方法。