5
A
回答
4
當線程無法獲取信號量時(由於缺少許可證)會發生什麼情況。它會被轉移到等待狀態嗎?
是的。如果你在談論java.util.concurrent.Semaphore
(和the aquire
method這是發生了什麼:
獲取一個許可從這個信號,阻塞直到有一個可用,或者線程被中斷
[...]
如果沒有可用的許可,那麼當前線程用於線程調度目的,禁用並一直處於休眠狀態的發生兩種情況之一:
其他一些線程調用此信號量的release()方法,並且當前線程旁邊將被分配一個許可證;或
某些其他線程會中斷當前線程。
tryAquire
將然而,顧名思義,只能儘量將收購的鎖,而不是阻塞返回false,如果它沒有許可證。
當信號量變爲可用時,線程是否會恢復前一個執行順序?
是的。如果另一個線程調用release
,則此線程可能會從acquire
返回並繼續它的執行。
相關問題
- 1. 未能獲取鎖的線程會發生什麼情況?
- 2. 當信號量在RTOS中發佈或發信號時會發生什麼?
- 3. 如果我不摧毀信號量會發生什麼?
- 4. 線程結束後會發生什麼?
- 5. ConcurrentHashMap.clear()讀線程會發生什麼?
- 6. Android SIP - 未能獲得邀請信號
- 7. 當獲取它的線程退出時,Mutex會發生什麼?
- 8. Qt:如果你發送信號太快會發生什麼?
- 9. exec上的掛起信號和信號掩碼會發生什麼?
- 10. 「發佈信號量的線程不需要與獲取它的線程相同」是什麼意思?
- 11. 當一個線程完成其互斥量時,線程會發生什麼?
- 12. 爲什麼信號不會觸發?
- 13. 信號性能發生重大變化的原因是什麼?
- 14. 爲什麼信號不會被捕獲?
- 15. 「D」狀態(或TASK_UNINTERRUPTIBLE)中的進程的信號會發生什麼?
- 16. Qt信號和插槽連接兩次...會發生什麼?
- 17. Java:信號量:生產者消費者:線程和線程組
- 18. .NET:如何獲得後臺線程信號主線程數據?
- 19. 主線程無法獲得信號形式工作線程
- 20. 發信號通知線程
- 21. java線程信號發送
- 22. 發送信號給線程
- 23. 爲什麼信號量被獲取而未被創建?
- 24. 如果沒有線程正在等待併發送條件信號,會發生什麼情況?
- 25. Firefox擴展javascript模塊:未導出符號會發生什麼?
- 26. 未初始化的變量會發生什麼? C++
- 27. PHPUnit:tearDown()方法未處理的變量會發生什麼變化?
- 28. 未接受連接會發生什麼?
- 29. SVN未使用時會發生什麼?
- 30. 未使用字段會發生什麼
因此它被移動到BLOCKED狀態,就像當線程無法獲得監視器鎖定時發生的情況。問題中的「等待狀態」可能不是正確的詞? – blitzkriegz 2010-10-21 09:16:43