有一个简单的列表:
private final List<Item> lst = new ArrayList();
当我需要同步时,我曾经做过以下事情:
synchronized (lst) {
// Some code
}
现在,我需要使用Condition
创建一个Lock.newCondition()
对象,我可以访问synchronized{}
使用的底层锁来创建我的条件,还是应该删除synchronized块并使用自定义Lock
对象?
答案 0 :(得分:5)
如果你需要一个Condition对象,那么明确表明内在锁定对你来说还不够。您需要使用
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
无论如何,如果你担心表演,这对现代虚拟机来说不是问题。显式锁定和内在锁定一样。