在Java多线程中,“private final Object”锁有何用途?
据我所知,为了使一个类具备线程安全性,我们应该使用内置锁,其中我们将所有方法标记为同步,并使用“this”在对象的监视器上锁定它们。或者,我们可以将类中标记为“this”的同步方法替换为在方法内部使用的私有最终对象锁来锁定通用对象锁,以使其具备线程安全性。
以下是使用内置锁的示例代码:
我们可以使用以下外部锁替换上述代码:
使用上述的外部锁使类成为线程安全的是否可取,而不是使用内部锁定?如果我的理解有误,请纠正我。
据我所知,为了使一个类具备线程安全性,我们应该使用内置锁,其中我们将所有方法标记为同步,并使用“this”在对象的监视器上锁定它们。或者,我们可以将类中标记为“this”的同步方法替换为在方法内部使用的私有最终对象锁来锁定通用对象锁,以使其具备线程安全性。
以下是使用内置锁的示例代码:
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
// ...
}
}
}
使用上述的外部锁使类成为线程安全的是否可取,而不是使用内部锁定?如果我的理解有误,请纠正我。