假設有兩個線程A和B.有一個對象有兩個同步方法dothisOne和dothis兩個,它們應該在調用程序中按順序執行(dothisOne ---> dothisTwo)。兩個線程都必須遵循相同的調用順序(dothisOne ---> dothisTwo)。假設兩者都開始新鮮並且第一個線程A在執行dothisOne時鎖定對象。一旦它完成了dothisOne並且控制出來...... ThreadB有沒有可能啓動dothisOne(或)它是否100%保證線程A會爲dothisTwo?這個問題與實例方法有關。如果它是類方法(靜態),我相信threadA會去dothisTwo實例方法JAVA中的同步
0
A
回答
3
是否有機會ThreadB啓動dothisOne(或)是否100%保證線程A將爲dothisTwo?
根本沒有保證。我懷疑它是更有可能線程A將進入doThisTwo
而不是,因爲基本上沒有什麼需要做退出顯示器和重新進入它之間 - 它不需要重新安排或任何東西。但是,不,它可能發生任何一種方式。
如果它是類方法(靜態),我相信的ThreadA會去dothisTwo
都能跟得上 - 同步不關心實例方法VS靜態方法。靜態和實例同步方法在不同的監視器中隱式地同步,但僅此而已。基本上,如果你想讓兩件事情作爲一個單元發生(就同步而言),你需要圍繞這對操作進行同步,而不是每個操作輪流進行同步。
相關問題
- 1. 在一個實例中的Java兩個同步的方法
- 2. java中的方法同步
- 3. 更多線程同步實例的同步方法
- 4. Java中同步方法ans同步塊
- 5. java中的實例方法
- 6. 線程調用非同步實例方法時的同步方法被調用
- 7. 如何實現同步Java方法
- 8. Java實例方法
- 9. Java的方法同步
- 10. 靜態的webdriver在Java實例同步
- 11. Java同步方法...不同步
- 12. Java的同步方法調用不同步方法
- 13. 瞭解Java中的方法同步
- 14. 瞭解JAVA中的同步方法
- 15. 訪問java中的同步方法
- 16. Java同步類中的方法
- 17. Java - 同步方法/塊
- 18. Java同步方法和塊
- 19. Java - 同步靜態方法
- 20. Java RMI方法同步
- 21. java方法同步對象
- 22. java靜態同步方法
- 23. 同步MongoDB實例
- 24. jsf和java中同步方法的最佳實踐
- 25. 如何在java中使用同步方法實現線程同步?
- 26. Java 1.4同步:只允許一個方法的實例運行(非阻塞)?
- 27. Java Nashorn實例化方法
- 28. 受管實例的同步
- 29. 不能在java中同步方法
- 30. 同步兩種方法在Java中
很高興知道。還有一點疑問:我們不能在靜態上下文中使用同步塊[synchronized(this){}],我們可以創建一個靜態變量myStatic並使用synchronized(myStatic)嗎?那會保證同步嗎? –
@SrikanthPai:是的,只要兩個線程與同一個引用同步即可。就我個人而言,我嘗試避免在實例方法中使用'this'同步...我更喜歡創建僅*用於同步的對象,因爲這樣可以更容易推理它們,因爲知道只有*代碼可以訪問監視器是班級中的代碼。 –