gpt4 book ai didi

java - 同步访问方法时是否需要集契约(Contract)步(通过 Collections.synchronizedX)?

转载 作者:行者123 更新时间:2023-11-29 05:25:18 27 4
gpt4 key购买 nike

当Java中的同步出现时,有很多话题。其中许多建议使用 Collections.synchronized{Collecation, List, Map, Set, SortedMap, SortedSet} 的调用而不是 Collection, List 等,以实现线程安全访问的多线程工作。

让我们想象一下当存在一些线程并且所有线程都需要通过其主体中具有同步块(synchronized block)的方法访问集合的情况。

那么,是否有必要使用:

    Collection collection = Collections.synchronizedCollection(new ArrayList<T>());

或仅

    Collection collection = new ArrayList<String>();

需要吗?

也许你可以给我举个例子,当第二次尝试而不是第一次尝试会导致明显不正确的行为时?

最佳答案

相反,Collections.synchronizedCollection() 通常是不够的,因为许多操作(如迭代、检查然后添加等)需要额外的显式同步。

如果对集合的每次访问都已通过适当的同步方法完成,那么将集合再次包装到同步代理中是无用的。

关于java - 同步访问方法时是否需要集契约(Contract)步(通过 Collections.synchronizedX)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22893381/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com