回答
罐上下文切換髮生?
是的,上下文切換也可以在塊內發生。這將是唯一不同的是,沒有其他線程將必須等到上下文切換回該捷足先登線程進入同一塊(或同一對象上任何其他塊),讓它與完成其受保護代碼。
有道理,完美! – Abidi
你明白是錯的。同步塊不會阻塞其他線程。同步塊僅阻止其他線程進入在同一對象上同步的塊。其他線程在正在執行同步塊的同時繼續運行。
和當然,上下文切換可能發生,而在synchronized塊,因爲其他線程也必須有一定的時間來執行自己。如果情況並非如此,則運行幾秒鐘的兩個同步塊將阻塞2核機器上的其他所有內容。你真的不希望發生這種情況。當線程正在執行內同步塊
我的理解線程阻塞的處理外synchronized塊是正確的,也許你的問題,我的理解是不正確的。感謝您關於上下文切換的答案,這是有道理的。 – Abidi
我只能通過你發佈的內容來判斷你的理解。你發佈*我理解一個同步塊或方法將阻止所有線程,直到其中一個「左」*,這顯然不是什麼同步。 –
您使用synchronized塊主要的原因是,上下文切換的OS進行實際!如果沒有上下文切換,則不需要同步塊。
實際上沒有上下文切換意味着沒有線程支持!是的,關於MS-DOS是真的,但沒有任何現代操作系統!
想到線程切換和同步是2完全不同的東西。同步只是關心共享資源,不能更少。另一個線程可以完成不同的事情。所以兩者都沒有關係。
上下文切換可以在裏面發生。如我們可以在區塊中調用sleep()
或wait()
方法。 sleep()
或wait()
使當前線程無法運行。
- 1. 在java中發生線程同步時?
- 2. 在java中同步線程
- 3. Java線程:同步塊
- 4. Java多線程同步塊
- 5. Java線程和同步塊
- 6. java線程同步塊
- 7. 在同步塊中停止線程
- 8. java.util.concurrent.ConcurrentHashMap.putIfAbsent是否需要在同步塊中?
- 9. 同步塊與在Java中
- 10. 線程同步問題(在java中)
- 11. 在java中同步多線程
- 12. 在Java線程中執行同步
- 13. 線程與同步在java中
- 14. 什麼是java中的線程同步?
- 15. java中的線程/同步
- 16. 在運行()的同步塊的中間是否可以中斷線程?
- 17. 是否需要在同步塊內使用線程wait()和notify()?
- 18. 在發生事件時切換觸發板同步
- 19. Java中是否存在同步隊列?
- 20. 線程:同步塊
- 21. 在C中同步線程#
- 22. 在ruby中同步線程
- 23. 在線程中同步Hashmap
- 24. 爲什麼模式切換在過程切換中發生?
- 25. 同步塊上的Java線程鎖
- 26. Java線程切換
- 27. 迭代在同步塊中檢索的列表是否線程安全?
- 28. Java線程「同步」
- 29. Java線程同步
- 30. Java同步線程
是的,可能發生的上下文切換,因爲它是由OS而不是JVM –