作者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)
1F:推 a613204:请问是指编译後产生的.class档吗 05/20 16:16
2F:推 weiyucsie:请注意内容提到的class object reference value这几个字 05/20 19:02
※ 编辑: sbrhsieh 来自: 218.173.133.141 (05/21 01:42)