読み取りのために複数のスレッド間で共有する必要がある文字列(tagList)のリストがあるので、変更不可能なバージョンを作成してスレッドに渡します。スレッドはそのリストのみを読み取るため、スレッドセーフかどうかはわかりません。それは大丈夫ですか?
また、その変更不可能なリストをスレッドに渡すと、単一のコピーを渡してスレッドで共有しますか、それとも複数のコピーを作成して各スレッドに 1 つのコピーを渡しますか?
ここに私のコードがあります:
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;
}
}));
}
}