假設有兩個線程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方法
- 5. Java實例方法
- 6. Java的同步方法調用不同步方法
- 7. 訪問java中的同步方法
- 8. Java - 同步方法/塊
- 9. Java - 同步靜態方法
- 10. java方法同步對象
- 11. Java RMI方法同步
- 12. 同步MongoDB實例
- 13. Java 1.4同步:只允許一個方法的實例運行(非阻塞)?
- 14. Java Nashorn實例化方法
- 15. 跨實例同步對MDB方法的訪問
- 16. 保持Singleton實例中的值同步
- 17. 多種方法之間的java同步
- 18. 在java中的靜態方法vs實例方法的決定?
- 19. 同步實施:Java的
- 20. Python中的抽象方法異步和同步實現
- 21. 同步Laravel雄辯實例
- 22. 同步Visual Studio實例
- 23. C#中的同步方法
- 24. 同步AzMan的兩個不同實例
- 25. 如何同步不同的shell實例
- 26. 來自不同實例的Java受保護的方法訪問
- 27. 方法:具有兩個不同類的實例的Java數組
- 28. 同步方法
- 29. 主要方法外的Java類實例
- 30. Java的實例方法調用
很高興知道。還有一點疑問:我們不能在靜態上下文中使用同步塊[synchronized(this){}],我們可以創建一個靜態變量myStatic並使用synchronized(myStatic)嗎?那會保證同步嗎? –
@SrikanthPai:是的,只要兩個線程與同一個引用同步即可。就我個人而言,我嘗試避免在實例方法中使用'this'同步...我更喜歡創建僅*用於同步的對象,因爲這樣可以更容易推理它們,因爲知道只有*代碼可以訪問監視器是班級中的代碼。 –