當兩個線程同時使用不同的實例調用靜態同步方法時會發生什麼?可能嗎?對象鎖用於非靜態同步方法,但是什麼類型的鎖用於靜態同步方法?java靜態同步方法
3
A
回答
6
它是一樣的Class
對象上同步實現該方法,所以是的,這是可能的,並且是,則該機制有效地忽略來回該方法被稱爲實例:
class Foo {
private static synchronized doSomething() {
// Synchronized code
}
}
是一個寫這個的快捷方式:
class Foo {
private static doSomething() {
synchronized(Foo.class) {
// Synchronized code
}
}
}
6
這是可能的。
線程鎖定在該類的Class
對象上,如MyClass.class
。
見JLS, Section 8.4.3.6. synchronized Methods:
8.4.3.6。同步方法
同步方法在執行之前獲取監視器(第17.1節)。
對於類(靜態)方法中,使用與 Class對象方法的類相關聯的顯示器。
0
靜態同步方法在類型爲java.lang.Class的實例上使用鎖。也就是說,每個可訪問的類都由運行時類型爲Class的對象表示,並且該對象由靜態同步方法使用。
0
當使用靜態鎖定時,對象被忽略。鎖是在課堂而不是對象上獲得的。
相關問題
- 1. Java - 同步靜態方法
- 2. 靜態同步方法與非靜態同步方法
- 3. 同步靜態方法
- 4. 靜態同步方法
- 5. 訪問靜態字段的Java同步和靜態同步方法
- 6. 關於靜態和非靜態方法的Java同步
- 7. Java的靜態同步
- 8. 什麼是靜態方法同步嗎?
- 9. 靜態方法的參數同步
- 10. 製作靜態方法是否同步
- 11. 線程中的靜態同步和非靜態同步方法行爲差異
- 12. 等同於靜態同步方法的同步塊?
- 13. 靜態初始化和靜態同步方法鎖定問題
- 14. 靜態和非靜態方法的同步
- 15. Java的同步,並通過多線程使用靜態同步方法
- 16. 當在同步方法或java中使用靜態成員
- 17. 同步靜態方法在Java中如何工作?
- 18. 同步關注與Java中的靜態方法
- 19. 如何在Java中同步靜態方法
- 20. 關於靜態變量的Java同步方法
- 21. 在java中使用靜態同步方法有什麼用途?
- 22. Java靜態方法
- 23. Java靜態方法
- 24. 同步靜態方法和非靜態方法之間的區別
- 25. 靜態同步方法vs靜態方法,所有代碼都在同步塊中
- 26. 靜態方法中的同步靜態方法和同步塊之間的區別?
- 27. 本地Java方法是否等同於靜態Java方法?
- 28. Java - 靜態變量不同步
- 29. Java與靜態地址條目同步
- 30. 靜態的webdriver在Java實例同步
如果提供,靜態方法將忽略實例變量。它甚至可以沒有錯誤地爲空。對於靜態方法,使用類對象。 –
討論http://stackoverflow.com/questions/437620/java-synchronized-methods-lock-on-object-or-class – yair