java内部锁可能会被多个线程同时获得么?
《java并发编程》P28的2.4一段话“对象的内部锁与它的状态之间没有内在的关系。尽管大多数类普及使用这样一种非常有效的锁机制:用对象的内部锁来保护所有的域,然而这并不...
《java并发编程》P28 的2.4 一段话
“
对象的内部锁与它的状态之间没有内在的关系。尽管大多数类普及使用这样一种非常有效的锁机制:用对象的内部锁来保护所有的域,然而这并不是必须的。即使获得了与对象关联的锁也不能阻止其他线程访问这个对象——获得对象的锁后,唯一可以做的事情是阻止其他线程再获得相同的锁。作为一种便利,每个对象都有一个内部锁,所以你不需要显示地创建锁对象。你可以构造自己的锁协议或同步策略,使你可以安全地访问共享状态,并且贯穿程序始终如一使用它们。
”
有点费解,难道内部锁默认会被多个线程同时得到么?内部锁不是
public class PrivateLock{
private final Object myLock=new Object();
Widget widget;
void someMethod(){
synchronized(myLock){
//访问修改Widget
}
}
}
中的myLock这样的对象么,这个内部锁会有被线程A和B同时获得的情况么?
我觉得内部锁和私有锁不可能同时被多个线程获得啊? 展开
“
对象的内部锁与它的状态之间没有内在的关系。尽管大多数类普及使用这样一种非常有效的锁机制:用对象的内部锁来保护所有的域,然而这并不是必须的。即使获得了与对象关联的锁也不能阻止其他线程访问这个对象——获得对象的锁后,唯一可以做的事情是阻止其他线程再获得相同的锁。作为一种便利,每个对象都有一个内部锁,所以你不需要显示地创建锁对象。你可以构造自己的锁协议或同步策略,使你可以安全地访问共享状态,并且贯穿程序始终如一使用它们。
”
有点费解,难道内部锁默认会被多个线程同时得到么?内部锁不是
public class PrivateLock{
private final Object myLock=new Object();
Widget widget;
void someMethod(){
synchronized(myLock){
//访问修改Widget
}
}
}
中的myLock这样的对象么,这个内部锁会有被线程A和B同时获得的情况么?
我觉得内部锁和私有锁不可能同时被多个线程获得啊? 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询