我有一个大型的 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())
}
然后我想更改 Copy 的 variable2 的内容而不是原始内容。总结一下:
- 对象值在线程之前初始化。
- 对象由多个线程共享(只读)。
- 当需要修改对象时,会制作对象的副本并对副本进行更改。
这是我的问题。
- variable1 和 variable2 的 getter 和 setter 是否需要同步。由于我只在线程之间共享时读取对象,这似乎是不必要的,但如果我错了,请纠正我。
- 有没有更好的方法来共享大量信息。(我不想为每个线程复制数组列表,因为它很大,有超过 200K 个对象)?