Ho una lista di string (tagList) che deve essere condivisa tra più thread per la lettura, quindi ne creo una versione non modificabile e la passerò ai thread, non sono sicuro che sia thread-safe, poiché i thread leggono solo quell'elenco così Immagino che dovrebbe essere ok?è unmodifiableList thread safe?
anche quando passo la lista non modificabile ai thread, passa una singola copia e condivisa da thread o crea più copie e ne passa una copia a ciascun thread?
Ecco il mio codice:
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;
}
}));
}
}
È thread-safe. – jdb