[英]Large Object Arrays shared among multiple threads. Thread Safe Techniques
我有一个大型的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())
}
然后,我想更改“副本”的变量2的内容,而不是原始内容。 总结一下:
这是我的问题。
如果您复制只读共享数组中存储的对象,则无需同步获取器/设置器。
只要列表是只读的,您的方法就可以了
我将有一个集合,该集合用每个线程的本地副本遮盖了原始列表。
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.