當我在java中有一個同步方法,並且如果有多個線程(可以說10個線程)試圖訪問這個方法,並假設某個線程可以訪問此方法並完成方法的執行併發布鎖然後剩下的9個線程中的哪一個可以訪問這個方法?是否有任何標準機制可以通過哪個標準機制從池中選擇下一個線程,還是以FIFO順序選擇它,還是隨機選擇線程?Java中的多線程
3
A
回答
8
Java
中的線程調度是特定於平臺的。在同步場景中,不能保證線程執行的順序。
話雖如此,該過程大致如下:採用
- 甲搶佔式調度算法中的每個線程由JVM
- 與他線程最高優先級被選擇得到了優先級數
- FIFO排序之後線程之間具有相同的優先級
殲VM運行具有最高優先級的線程。優先級也可以通過Thread
類的setPriority()
方法以編程方式設置。
3
下一個線程將被隨機選擇,而選擇下一個線程的算法在不同的機器上可能會不同。這對於Java來獲得使用本機線程的效率是必需的。
如果您需要先進先出行爲,則可能需要使用java.util.concurrent包中的某些內容,例如將公平性設置爲true的Semaphore類。
相關問題
- 1. java中有多線程的多線程
- 2. 多線程Java中
- 3. 關於多線程的java多線程
- 4. Java中的多線程
- 5. Java中的多線程
- 6. Java中的多線程
- 7. java中的多線程HashTable
- 8. java中的多線程
- 9. java servlets中的多線程
- 10. java中的多線程quicksort
- 11. Java中的多線程
- 12. Java中的多線程
- 13. JFrame中的Java多線程
- 14. Java中的多線程
- 15. 的Java多線程
- 16. 多線程Java的
- 17. 多線程Java的
- 18. Java線程(多線程)
- 19. Java:多線程
- 20. java多線程
- 21. Java多線程
- 22. 多線程|| Java
- 23. java多線程
- 24. 多線程java
- 25. Java多線程
- 26. Java多線程程序:多線程中的對象共享
- 27. java編程和java單線程多線程問題(單線程與多線程)
- 28. 的Java多線程的線程隨機
- 29. 多CPU核心中的Java多線程
- 30. java中的多線程程序
我相信這是隨機的,但我可能被誤認爲 – Alejandro
取決於機器本身,儘管根據我的經驗,線程將放入隊列中,所以先進先出 – Rogue