[英]Why can't I directly access (and lock) the implicit lock that Objects use for synchronized block
[英]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.