簡體   English   中英

修改ConcurrentHashMap中Object包含的List

[英]Modifying List contained in Object inside ConcurrentHashMap

我正在使用 Map 將客戶的購物籃商品存儲在內存中。 我的 map 具有以下簽名Map<Integer, Basket> customerBaskets = new ConcurrentHashMap<>();

每個Basket class 都有一個項目列表,定義為Collection<Item> items = new ArrayList<>()

在應用程序啟動期間,所有客戶都加載到 map 中,並為他們分配了一個空籃子。 現在我想以線程安全的方式將商品添加到客戶的購物車中。 由於ConcurrentHashMap讀取沒有鎖定,我可以根據 customerId 獲取籃子並自由地將項目添加到items列表中,這不能保證我的線程安全。 如何確保寫入此列表的線程安全和讀取具有最新的寫入值? 請指教。

謝謝你。

您需要使用諸如 ReentrantLock 之類的東西來同步 ArrayList 上的讀寫操作,或者為此底層數組使用 CopyOnWriteArrayList 實現。

暫無
暫無

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

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