我有一个字符串列表(tagList),它需要在多个线程之间共享读取,所以我创建一个不可修改的版本并将它传递给线程,即时通讯不知道它是否线程安全,因为线程只读取列表我想应该没问题?is unmodifiableList线程安全吗?
还当我传递unmodifialble列表提供给线程,它通过一个单拷贝和共享通过螺纹或它创建多个拷贝和一个副本传递给每个线程?
这里是我的代码:
final List<String> tList = Collections.unmodifiableList(tagList);
List<Future<Void>> calls = new ArrayList<Future<Void>>();
FileStatus[] fsta = _fileSystem.listStatus(p);
for (FileStatus sta : fsta) {
final Path path = new Path(sta.getPath(), "data.txt");
if (!_fileSystem.exists(path)) {
continue;
}
else {
calls.add(_exec.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
filterData(path, tList);
return null;
}
}));
}
}
它是线程安全的。 – jdb