5
A
回答
2
9
行爲將是非確定性(即,或者線程可能獲得鎖),並且它可以從執行到執行而變化。這是因爲它取決於具體的JVM實現以及線程的特定調度。
根據這篇文章JVM規範提出公平沒有任何限制:
公平
Java的內存模型不指定線程或搶佔式多線程任何公平性的要求。一個線程可以拒絕將CPU交給另一個線程並引發系統死鎖。公平性對其他線程的規則由各個JVM實現定義。
也就是說,除非您仔細同步您的程序,否則理論上一個線程可能會被調度程序餓死。
相關問題
- 1. 當ThreadB Monitor.Pulse(_locker)哪個線程會首先得到_locker?
- 2. 哪個線程獲取鎖定哪個對象?
- 3. 如何找出哪個線程在互斥鎖上有鎖?
- 4. 互斥鎖與線程鎖。使用哪個?
- 5. pthread_mutex更新不夠快,所以一個線程會「鎖定」鎖。
- 6. 哪個線程會通知喚醒?
- 7. 哪個處理器會獲得自旋鎖?
- 8. 以編程方式確定哪個Java線程持有鎖
- 9. 如何讓一個線程解鎖另一個線程鎖定的互斥鎖?
- 10. 當新的表單,我會得到一個進程或線程?
- 11. 鎖定多個線程
- 12. 當第一個線程鎖定類時第二個線程會發生什麼
- 13. Boost爲同一個線程獲得多個鎖
- 14. 同步方法override-線程獲取鎖定哪個對象?
- 15. pthread_cond_broadcast之後哪個線程擁有關聯的互斥鎖?
- 16. Java線程鎖
- 17. 線程和鎖
- 18. 如何找到哪個線程當前擁有在java中的鎖
- 19. 線程轉儲和信號與行號得到死鎖
- 20. 線程,流利nhibernate和保存數據得到死鎖
- 21. 如何找到哪個線程被卡
- 22. QMutex鎖定在一個線程中,並在另一個線程中解鎖
- 23. 哪個線程完成多線程?
- 24. VB.NET多線程,封鎖線程,直到收到通知
- 25. 兩個線程程序防止死鎖
- 26. 可以從一個線程轉移到另一個線程的鎖
- 27. 有可能得到一個線程鎖定機制在C++與std :: atomic_flag?
- 28. 爲什麼這個線程管理模式會導致死鎖?
- 29. 在單個線程中導致死鎖的單休眠會話
- 30. 從幾個線程調用WSAStartup()會導致死鎖嗎?
我想,VM將不得不拋硬幣。 – 2010-10-17 10:18:32
有點相關http://stackoverflow.com/questions/3940164/java-waiting-on-synchronized-block-who-goes-first – Thilo 2010-10-17 10:21:03
這是否意味着如果兩個線程都嘗試獲取鎖在一個循環? – 2010-10-17 10:21:38