java - 同步集合 getter

标签 java multithreading collections

IIUC,一个仅由同步方法访问的集合应该是线程安全的 - 是这样吗?

例如,

class Foo {
  private List<String> mList = new LinkedList<>();
  public synchronized List<String> getList() {
    return mList;
  }
}

假设这个 getter 用于独占来访问列表 - 所有操作都是通过 getList() - 感觉它对我来说应该是线程安全的 - 但我'我很高兴被告知我错了。

泰亚

最佳答案

这很可能不够,因为它只是返回 List 的引用;多个线程仍然能够同时修改它,从而导致竞争条件。如果您正在寻找完全同步的 List,那么我建议使用用 Collections#synchronizedList 包装的 ArrayList

关于java - 同步集合 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43456272/

相关文章:

java - $inc 运算符和 java 驱动程序的问题

java - 在 spring 配置中设置 xml 数据以进行 Junit 测试

c++ - 需要帮助通过引用类传递 Windows 事件句柄

java - 在减去值时无法控制 AtomicInteger 的原子行为

xml - 如何使用 JAXB 解码根元素的集合?

java - 如何计算数组列表中的重复项?

Java 8 将对象添加到列表的有效方法

c# - 控制线程数以平衡 .NET 中的 CPU 和 IO 等待

java - 如何将二维数组的条目作为键放入 map 中

c# - 如何创建具有不同元素的 HashSet<List<Int>>?