簡體   English   中英

GuardedBy 和 concurrentHashMap

[英]GuardedBy and concurrentHashMap

我看到如下代碼片段:

@GuardedBy("this") private final Map<Id, Supplier<List<Predicate>>> filters = new ConcurrentHashMap<>();

我的問題是因為這個 object ( filters )已經受到保護,我可以只使用HashMap而不是ConcurrentHashMap嗎?

謝謝你。

@GuardedBy("this")據我所知,這是一個自定義注釋,在 Java Concurrency in Practice by Brian Goetz 中建議使用該注釋(強烈建議閱讀這本書),或者可能是這個注釋,它不是標准的 JDK注解。 因此,它只能被視為對程序員的提示,什么是鎖 object 保護可以從多個線程訪問的字段,或者換句話說,標記注釋。

TL;DR - 不,你不能。 如果您希望對過濾器的訪問是線程安全的,請保留 ConcurrentHashMap。 @GuardedBy 注解不會使對字段的訪問同步,它只是幫助您理解代碼。

暫無
暫無

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

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