2011-04-11 69 views
2

我正在使用線程池在我的應用程序的後臺執行任務。但是,我的一些任務比其他任務重。所以我想將繁重的任務限制在線程池的某個子集中,因此至少要打開幾個線程才能執行任何輕量級任務。如何限制任務使用線程池中的所有線程?

有沒有簡單的方法來做到這一點?

+5

使用兩個線程池。 – khachik 2011-04-11 18:44:28

回答

0

正如前面所說,最簡潔的方法是對重線程使用單獨的線程池。

另一種方法是使用信號量。創建一個數量爲3的信號量。重線程必須首先獲取()。只有三個重的人能夠這樣做。其餘的將等待(或失敗,如果你使用tryAcquire())。

當然,線程需要「知道」它是一個「重」的線程。對於第三方線程無效,請再次參閱「雙池」方法。 :-)

1

最簡單的方法是爲不同的「任務權重」使用單獨的線程池。

即使您可以創建單獨的類,爲不同的任務提供單獨的方法。