1樓:蘑菇飯資訊
主執行緒做個while true迴圈判斷所有的子執行緒!isalive()
不知道你的執行緒池的實現是自寫還是使用jdk提供的。
如果是jdk提供的執行緒池。可以去判斷getpoolsize()是否等於或者小於池的核心執行緒數量corepoolsize。當然這種情況下也存在陷阱,一就是核心執行緒數量無法確定是否在空閒狀態,只有將corepoolsize設定為0,才能正確判斷。
二就是執行緒池對空閒執行緒的銷燬存在乙個keepalivetime,只有要將keepalivetime減小到你getpoolsize的頻率時,可能才能正確判斷。並且如果使用threadpoolexecutor,對於池中的執行緒,你無法針對某乙個執行緒進行操作。
我的感覺,你現在的需求不符合使用執行緒池的需求,你需要的是乙個執行緒管理類而不是池。
乙個同步輔助類,它允許一組執行緒互相等待,直到到達某個公共屏障點 (common barrier point)。在涉及一組固定大小的執行緒的程式中,這些執行緒必須不時地互相等待,此時 cyclicbarrier 很有用。因為該 barrier 在釋放等待執行緒後可以重用。
牢記一點:當要解決任何執行緒問題時,優先考慮api提供的工具。
--解決方案---頂四樓。
不清楚主執行緒是不是可以掛起,如果可以,可以在子執行緒可行的位置將主執行緒掛起,當子執行緒邏輯結束後,再將主執行緒喚醒。
僅做猜測,不可定論。
這好辦啊。
如何判斷j**a多執行緒是否全部執行完了,並計
2樓:向前奔跑
思路: 把所有的執行緒都放到執行緒池裡面。
步驟:1: 建立執行緒池 executorservice cachedthreadpool
2: 開啟乙個執行緒 runnable() //做任務})3.: 判斷執行緒池裡面是否執行完,while (true)}
j**a如何判斷執行緒池所有任務是否執行完畢
3樓:地瓜說機
import ;
import ;
public class test
while (true)
}}上面是主執行緒的**,建立了乙個能同時執行2個執行緒的執行緒池,並投入5個執行緒,當5個執行緒都執行完畢後列印---結束了!」字串。
該方法在加入執行緒佇列的執行緒執行完之前不會執行。當shutdown()或者shutdownnow()執行了之後才會執行,並返回true。
在上面的**中必須有的判斷,否則在投入5個執行緒到執行緒池後會直接列印:「結束了」。不能達到我們想要的效果。
通過while(true)迴圈判斷的值,為了防止過多的判斷浪費資源,可設定執行緒睡眠;正是由於這個睡眠,所以當所有執行緒池中的執行緒都執行完後,有可能延遲200ms才執行"結束了"語句。這個引數越小延遲越小,結果越準確。
下面是子執行緒,子執行緒只是簡單的將數字i列印出來;
如何判斷執行緒池所有任務是否執行完畢
4樓:網友
void shutdown()
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則呼叫沒有其他作用。
丟擲:securityexception - 如果安全管理器存在並且關閉,此 executorservice 可能操作某些不允許呼叫者修改的執行緒(因為它沒有保持runtimepermission("modifythread")),或者安全管理器的 checkaccess 方法拒絕訪問。
isterminated
boolean isterminated()如果關閉後所有任務都已完成,則返回 true。注意,除非首先呼叫 shutdown 或 shutdownnow,否則 isterminated 永不為 true。
返回:如果關閉後所有任務都已完成,則返回 true
多執行緒下如何判斷執行緒全部執行完了呢
5樓:網友
listarr = new list();
for (int i =0; i <90; i=i+5) //迴圈建立執行緒。
foreach(thread t in arr)}// 走到這裡,所有執行緒都結束了,哈哈。
6樓:
呼叫執行緒類的isalive()成員函式可以判斷。
7樓:
可以通過判斷執行緒的狀態來判斷執行緒是否執行完畢。
如何通過坡度線判斷河流流向,如何通過坡度線判斷河流流向。
有句話說,人往高處走,水往低處流。因受到地心引力的影響,水一定是從海拔高的地方向海拔低的地方流的。所以判斷河流方向,你就看兩端那個地方的等高線的數值低,就向那個方向流。比如 河流ab。a處等高線是100 120,而a周圍的等高線都是高於120的,b處等高線是100 120,而b周圍的等高線是低於10...
怎麼判斷電場線方向,物理。如何判斷電場線方向?
電場強度方向。場源電荷法。等勢面法或電勢差法。一 電場強度方向 電場強度是向量,有大小,有方向,在一些口語表達中提到的電場方向 場強方向都是指電場強度方向,當電場確定之後電場中各點的電場強度方向也隨之確定,不會判斷方法不同而改變。二 電場強度方向判斷 1 試探電荷受力法 物理學中規定 電場中某點電場...
山脊處如何判斷河流流向,如何根據等高線判斷山谷,山脊及河流流向
如果以高程來說,等高線凸向數字大的是山谷,反之,凸向數字小的是山脊.如果沒有數字作參考的話,你可以跟地貌符號來判斷,象山頂就是乙個小三角形,凸向三角形則為山谷,反之為山脊.如何根據等高線判斷山谷,山脊及河流流向 山脊 等高線彎曲 突出部分指向低處 凸高為低 山谷 等高線彎曲 突出部分指向高處 凸低為...