簡體   English   中英

我可以訪問Java中同步塊使用的鎖嗎?

[英]Can I access the Lock used by a synchronized block in Java?

有一個簡單的列表:

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

當我需要同步時,我曾經做以下事情:

synchronized (lst) {
    // Some code
}

現在,我需要使用Lock.newCondition()創建一個Condition對象,是否可以訪問Lock.newCondition() synchronized{}使用的基礎鎖來使用它創建條件,還是應該刪除同步塊並使用自定義Lock對象?

如果您需要一個Condition對象,則明確表明內部鎖定不足以滿足您的需求。 您將需要使用

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

無論如何,如果您擔心性能,那么對於現代虛擬機來說這不是問題。 顯式鎖定與固有鎖定一樣好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM