静态方法同步是否会延迟 class 对象的创建?
Does a static method synchronization delay creation of object of the class?
class A{
synchronized static void method(){
doSomethingLongTime(); // here A.class monitior is taken.
}
}
.......
new A(); // does this blocked by doSomethingLongTime() ?
上面的代码描述了我的问题:new A()
肯定处理A.class,所以它被阻止了吗?
没有。静态方法的锁是在 A class 对象上获取的。没错。
但是 new A() 不在同步块内。所以这一行不需要等待任何锁定对象并且可以继续。除非在同步块中明确指定,否则不会阻止新对象的构造。
class A{
synchronized static void method(){
doSomethingLongTime(); // here A.class monitior is taken.
}
}
.......
new A(); // does this blocked by doSomethingLongTime() ?
上面的代码描述了我的问题:new A()
肯定处理A.class,所以它被阻止了吗?
没有。静态方法的锁是在 A class 对象上获取的。没错。 但是 new A() 不在同步块内。所以这一行不需要等待任何锁定对象并且可以继续。除非在同步块中明确指定,否则不会阻止新对象的构造。