在
java多线程中使用“私有最终对象”锁定有什么用?
据我所知,我认为要使类成为线程安全的,我们应该使用内部锁定,我们将所有方法标记为synchronized& amp;使用“this”将它们锁定在Object的监视器上?或者我们可以用方法中的私有最终Object锁替换在类的“this”上标记为synchronized的方法,以锁定通用Object锁以使其线程安全吗?
仅举例来说使用内部锁定的代码:
public class Counter{
// Locks on the object's monitor
public synchronized void changeValue() {
// ...
}
}
我们可以使用以下外部锁替换上面的代码:
public class Counter{
private final Object lock = new Object(); // private final lock object
public void changeValue() {
synchronized (lock) { // Locks on the private Object
// ...
}
}
}
是否建议使用上述外部锁而不是使用内部锁定来使类成为线程安全的?如果我的理解不对,请纠正我?