0

我想創建一個將在線程之間共享的數組,這意味着數組應該具有被修改的能力我可以找到的唯一解決方案是創建一個synchronizedList。Java同步/線程安全/「集中」數組或其他線程將共享的替代方案

是否有可能創建/創建一個數組它可能是(同步/線程安全的/'集中式「)或者換言之,在Java中的線程之間共享?

謝謝!

+0

是的。使數組爲'private',不要讓引用泄漏。創建兩個方法'set'和'get',它們是* synchronized *並使用這些方法修改/獲取數組中的數據。只要所有對數組的訪問都是通過這些方法進行的,並且不泄漏數組的引用,那麼您就很好。 PS:您可以添加新的「最終同步」方法,以防您需要更多功能。 – TheLostMind

回答

0

同步列表不起作用,因爲您可以遍歷當前正在更改的列表,即查看列表的未發佈狀態。

請檢查CopyOnWriteArrayList它將允許您自動更改列表並獲取有效列表快照,每次迭代/搜索時都會顯示。缺點是每個CopyOnWriteArrayList修改都會複製底層數組。