當兩個線程同時使用不同的實例調用靜態同步方法時會發生什麼?可能嗎?對象鎖用於非靜態同步方法,但是什麼類型的鎖用於靜態同步方法?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. 訪問靜態字段的Java同步和靜態同步方法
- 4. 關於靜態和非靜態方法的Java同步
- 5. Java的靜態同步
- 6. 什麼是靜態方法同步嗎?
- 7. 製作靜態方法是否同步
- 8. 等同於靜態同步方法的同步塊?
- 9. 靜態初始化和靜態同步方法鎖定問題
- 10. 如何在Java中同步靜態方法
- 11. 當在同步方法或java中使用靜態成員
- 12. 同步關注與Java中的靜態方法
- 13. 同步靜態方法在Java中如何工作?
- 14. Java靜態方法
- 15. Java靜態方法
- 16. 同步靜態方法和非靜態方法之間的區別
- 17. 本地Java方法是否等同於靜態Java方法?
- 18. Java靜態同步vs BlockingQueue實現
- 19. Java與靜態地址條目同步
- 20. Java - 靜態變量不同步
- 21. Java錯誤:靜態方法無法引用非靜態方法
- 22. Java靜態方法參數
- 23. Java重寫靜態方法
- 24. Java,使方法靜態
- 25. Java靜態方法+類
- 26. Java類和靜態方法
- 27. 靜態方法 - Java的
- 28. Java無名靜態方法
- 29. Java:訪問靜態方法
- 30. Java中的靜態方法
如果提供,靜態方法將忽略實例變量。它甚至可以沒有錯誤地爲空。對於靜態方法,使用類對象。 –
討論http://stackoverflow.com/questions/437620/java-synchronized-methods-lock-on-object-or-class – yair