gpt4 book ai didi

java - 关于 Java Collections Framework 中的非同步和同步访问?

转载 作者:太空狗 更新时间:2023-10-29 22:45:39 25 4
gpt4 key购买 nike

谁能解释一下什么是 Java 集合框架中的非同步和同步访问?

最佳答案

同步与非同步访问与 Java 集合框架无关。

同步访问意味着您有某种类型的锁定来访问数据。这可以通过使用 synchronized 关键字或通过使用 java.util.concurrent 包中的一些更高级别的构造来引入。

非同步访问意味着您在访问数据时涉及任何锁定。

如果您在多个线程中使用一个集合,您最好确保以同步方式访问它,或者集合本身是 thread safe ,即在内部处理这种锁定。

要确保以同步方式访问某些集合 coll 的所有访问,您可以

  • ...使用 synchronized (coll) { ... }

    进行环绕访问
    public void someMethod() {
    synchronized (coll) {
    // do work...
    }
    }
  • ...使用 Collections.synchronizedCollections 封装它

    coll = Collections.synchronizedCollection(coll);

在前一种方法中,您需要确保对集合的每次访问 都被同步 覆盖。在后一种方法中,您需要确保每个引用 都指向集合的同步版本。

然而,正如@Fatal 所指出的,您应该了解后一种方法只会将线程不安全集合转换为线程安全集合。这通常不足以确保 编写的类是线程安全的。有关示例,请参阅@Fatals 评论。

关于java - 关于 Java Collections Framework 中的非同步和同步访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6422887/

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