2010-10-24 54 views
6

我用ThreadPoolExecutor加載了大量的圖片。如何刪除ThreadPoolExecutor中的舊排隊任務並插入新任務?

當新的圖像發現,我需要先使其在這種情況下,我要放棄目前仍在排隊中的ThreadPoolExecutor並添加這些新項目,以下載舊任務。

我發現沒有「明確的隊列」方法的ThreadPoolExecutor和「清洗」的方法聽起來並不好這一點。

我該怎麼辦?

我只是想打電話給此執行的「關機」,然後重新創建一個新的做這個,不能確定它是否是合適的。

回答

4

ThreadPoolExecutor具有remove()方法。您可以將其與getQueue()一起使用,或保留自己的已收集隊列並可能需要刪除的Runnable。如果您保留自己的收藏集,請記住有一些mechinism會在完成後從收藏集中刪除可運行的收藏集。

7

你試過嗎?

ThreadPoolExecutor pool = .....; pool.remove(task); 

任務是您要刪除的Runnable。

,或者如果你想清除隊列。

pool.getQueue().clear() 
+0

雖然javadoc說你真的不應該使用getQueue方法,但這可能是你想要根據OP的問題去做的方法。 – 2010-10-24 20:54:45

+0

是的,javadoc說getQueue方法不建議使用,我只是認爲這不是一個好方法。 – virsir 2010-10-25 07:25:48

相關問題