gpt4 book ai didi

Java同步静态列表?

转载 作者:行者123 更新时间:2023-12-01 19:20:08 25 4
gpt4 key购买 nike

在 Java 类中,我有一个静态列表,因此该列表在此类的所有对象之间共享。此类中的业务逻辑将定期运行,由某些方法调用,无需传递实例参数。现在我想要基于列表调用这个运行方法(我将基于JMS添加一些值到这个列表中),这个列表有时可能是空的,运行完成后,我清空这个列表。现在我的问题是,我是否需要是否同步此列表?

还让我知道除了静态变量(静态列表)之外,是否还有其他方法可以将一个对象实例(线程1)中的值传递到另一个对象实例(线程2)?

谢谢

最佳答案

您需要同步对此列表的所有读取和写入,或者使用具有多线程功能的列表(例如 CopyOnWriteArrayList,甚至是 ConcurrentMap,如果您将其用于更复杂的东西)。

否则,您将需要良好的并发控制,以便不同的线程不会相互覆盖,并且其他线程也可以看到所做的更改。

重新编辑:在线程之间传递数据的最佳方法是让它们共享数据结构。静态变量是一种方式,但它不是共享的唯一方式。您可以通过在两个线程中传递的公共(public)对象(例如在构造函数中)进行共享。通常,这称为队列,其中一个线程写入,其他线程从中消费。在java中,有一些阻塞队列可以使这变得更容易 - 请参阅此包中的许多不同的类http://download.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/package-summary.html

关于Java同步静态列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704096/

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