有沒有辦法使用ExecutorService來暫停/恢復特定線程?Java ExecutorService暫停/恢復特定線程
private static ExecutorService threadpool = Executors.newFixedThreadPool(5);
想象一下,我想停止線程至極作爲id = 0(假定每個之一被分配一個增量ID直到線程池的大小達到)。
經過一段時間後,通過按下一個按鈕,比方說,我想恢復該特定的線程,並將所有其他線程保留爲當前狀態,可暫停或恢復。
我在Java文檔中發現了一個未完成版本的PausableThreadPoolExecutor。但它不適合我需要,因爲它恢復了池中的所有線程。
如果沒有辦法通過ExecutorService的默認實現來完成它,任何人都可以指向我的Java實現來解決這個問題嗎?
謝謝!
你確定嗎?給定id的線程執行一些隨機選擇的工作,所以你正在停止一些未知的工作。這是什麼意思? – 2012-08-11 15:46:04
想象一下下面的情況:你有一個下載管理器,在那個管理器上你可以停止並恢復下載。對於每一個你正在下載的東西,無關緊要,你想停止下載,無論你想要恢復。這是否使問題更清楚? – 2012-08-11 16:10:21
更清晰,但意義不大。停止/恢復下載是關於業務邏輯的,而線程池則關於計算資源。通過添加/刪除資源來控制邏輯是一個好主意恕我直言。 – 2012-08-11 20:00:19