我可以访问Java中同步块使用的锁吗?

时间:2016-04-06 07:48:13

标签: java multithreading locking synchronized

有一个简单的列表:

private final List<Item> lst = new ArrayList();

当我需要同步时,我曾经做过以下事情:

synchronized (lst) {
    // Some code
}

现在,我需要使用Condition创建一个Lock.newCondition()对象,我可以访问synchronized{}使用的底层锁来创建我的条件,还是应该删除synchronized块并使用自定义Lock对象?

1 个答案:

答案 0 :(得分:5)

如果你需要一个Condition对象,那么明确表明内在锁定对你来说还不够。您需要使用

    Lock lock = new ReentrantLock();
    Condition condition = lock.newCondition();

无论如何,如果你担心表演,这对现代虚拟机来说不是问题。显式锁定和内在锁定一样。