Pro*_*man 5
不,不是的。
该synchronize(A.class)
块由类的Class<A>
实例控制,该实例A
始终存在并且始终是相同的实例1。所以每次执行Exe1.exec()
都被同一个实例锁定/同步。
然而,该synchronize(A.age)
块由当前位于静态字段中的当前实例控制A.age
。可以通过为A.age
like分配不同的实例来更改它A.age = Integer.valueOf(42);
。之后, 的每次执行Exe2.exec()
都由该 Integer
对象控制,独立于当前锁定的Exe2.exec()
. 另外A.age
can be null
,这意味着当你遇到synchronize(null) {...}
.
1 ) JLS 不要求.class
表达式(参见15.8.2. 类文字)总是返回相同的实例,参见JLS - 12.2。类和接口的加载:
行为良好的类加载器维护以下属性:
给定相同的名称,一个好的类加载器应该总是返回相同的类对象。
更多推荐
我在,变量,静态,类中,效果
发布评论