有一个简单的列表:
private final List<Item> lst = new ArrayList();当我需要同步时,我经常执行以下操作:
synchronized (lst) {
// Some code
}现在,我需要使用Condition创建一个Lock.newCondition()对象,我可以访问synchronized{}使用的底层锁来创建我的条件,还是应该删除同步块并使用自定义的Lock对象?
发布于 2016-04-06 07:56:10
如果您需要一个条件对象,这是一个明确的迹象,表明内部锁定对您来说是不够的。你需要用
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();不管怎么说,如果你担心性能问题,那就不是现代虚拟机的问题了。显式锁定与内部锁定一样有效。
https://stackoverflow.com/questions/36444684
复制相似问题