我有一个大型的对象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内容,而不是原件。概括地说:
这是我的问题。
发布于 2012-04-19 12:20:22
如果要复制存储在只读共享数组中的对象的副本,则不需要同步getters/setters.
就可以了。
发布于 2012-04-19 12:22:52
我会有一个集合,它用每个线程的本地副本对原始列表进行阴影。
public class ShadowList<T> {
private final List<T> original;
private final List<T> local;
public ShadowList(List<T> original) {
this.original = original;
local = Arrays.<T>asList((T[]) new Object[original.size()]);
}
public T get(int n) {
T t = local.get(n);
if (t == null)
t = original.get(n);
return t;
}
public void set(int n, T t) {
local.set(n, t);
}
}https://stackoverflow.com/questions/10227883
复制相似问题