我正在使用线程池在我的应用程序后台执行任务。但是,我的一些任务比其他任务重。所以我想将繁重的任务限制在线程池的某个子集中,从而至少留下几个线程来执行任何轻量级任务。
有一种简单的方法吗?
答案 0 :(得分:1)
最简单的方法是为不同的“任务权重”使用单独的线程池。
即使您可以创建单独的类,也可以为不同的任务公开单独的方法。
答案 1 :(得分:0)
正如所说,最干净的方法是为重线程使用单独的线程池。
另一种方法是使用信号量。创建一个计数为例如三的信号量。重型线程必须先获取()它。只有三个重的人才能这样做。其余的将等待(或失败,如果你使用tryAcquire())。
当然,线程需要“知道”它是一个“重”的。对于第三方线程,它不起作用,因此请再次查看“两个池”方法。 : - )