作者sbrhsieh (sbr)
看板java
標題Re: [問題] static synchronized
時間Wed May 20 01:19:28 2009
※ 引述《a613204 (胖胖)》之銘言:
: 想請問一下 static synchronized method 鎖住的是哪一個物件呢??
: 少了static 的話 好像是用物件本身去鎖住函數
: 那加上了static 可以在不產生物件的情況下呼叫,那麼這個時候是用哪個物件去鎖住呢??
: 請各位幫忙解答~~謝謝
JVM/ClassLoader 在 load and resolve class 之後,會建構一個 class object(
java.lang.Class subclass instance)。你可以看成這個 class object 在 runtime
代表一個 Java class(class object 提供 reflection 機制讓程式在 runtime 取得
Java class 的資訊,而這些資訊(java.lang.reflect.Field/java.lang.reflect
.Method 也提供對應的操作)。
Class Literal(ClassName.class) 的值就是 class object reference value。
class Foo {
static synchronized void bar() {
...
}
}
bar 在執行過程中握有(鎖)的是 Foo.class 這個 object's monitor。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.137.181
※ 編輯: sbrhsieh 來自: 218.173.137.181 (05/20 01:21)
推 a613204:請問是指編譯後產生的.class檔嗎 05/20 16:16
推 weiyucsie:請注意內容提到的class object reference value這幾個字 05/20 19:02
※ 編輯: sbrhsieh 來自: 218.173.133.141 (05/21 01:42)