gpt4 book ai didi

java - 多个线程共享的大对象数组。线程安全技术

转载 作者:行者123 更新时间:2023-11-30 05:53:47 24 4
gpt4 key购买 nike

我有一个类似于以下对象的大型 ArrayList

class Entry {
private String variable1 = null;

private int variable2 = 0;

public Entry (String variable1) {
this.variable1 = variable1;
}

/* getters and setters for variable1 and 2 are below */
}

我初始化 ArrayList 中的对象,然后创建多个线程。每个线程搜索大量文档以确定 variable1 的内容是否嵌入到文档中。如果是,我想制作一个特定于线程的条目副本,类似于以下内容:

public Entry(Entry entry) {
this(entry.getVariable1())
}

然后我想更改副本的 variable2 的内容而不是原始内容。总结:

  1. 对象值在线程化之前初始化。
  2. 对象由多个线程共享(只读)。
  3. 当需要修改对象时,会创建对象的副本,并对副本进行更改。

这是我的问题。

  1. 变量 1 和变量 2 的 getter 和 setter 是否需要同步。由于我只在线程之间共享时读取对象,这似乎没有必要,但如果我错了请纠正我。
  2. 有没有更好的方法来共享大量信息。 (我不想为每个线程复制 arraylist,因为它有超过 200K 个对象)?

最佳答案

  1. 如果您复制存储在只读共享数组中的对象,则无需同步 getter/setter。

  2. 只要列表是只读的,你的方法似乎没问题

关于java - 多个线程共享的大对象数组。线程安全技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10227883/

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