gpt4 book ai didi

java - 我应该从多个线程访问(而不是更改)一个对象吗?

转载 作者:行者123 更新时间:2023-12-01 17:29:09 32 4
gpt4 key购买 nike

我的情况是我有两个线程。第一个线程生成许多对象,第二个线程在创建所有对象之前无法访问这些对象。之后,第二个线程读取这些对象中的字段,但与第一个线程同时执行。此时没有线程正在更改对象字段的值。对象不同步。我应该同步它们吗?

最佳答案

我建议使用 AtomicReference<Collection<SomeObject>> 。第一个线程将生成对象集合并执行 reference.put(collection) 。第二个线程将在 reference.get() 上设置对象 ( AtomicReference ) 后看到它们。仅有的。这是javadocs for AtomicReference 。您还可以将对象设置为数组或任何类型的集合,例如 List .

AtomicReference 上设置集合(或数组)后,认识到这一点很重要您无法对集合进行任何更改。您无法添加其他项目、清除它等。如果您想要真正并发访问对象集合,那么您应该查看 ConcurrentHashMap 和 friend 们。

Should I synchronize them or not?

如果对象在放入集合后根本不会发生变化,那么您不需要使它们同步。

关于java - 我应该从多个线程访问(而不是更改)一个对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717178/

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