Скажем есть такой класс
class Test {
private ArrayList<String> mList;
Test() {
mList = new ArrayList<String>();
mList.add("Foo");
mList.add("Bar");
mList.add("Baz");
}
public ArrayList<String> search(String what) {
ArrayList<String> res = new ArrayList<String>();
for (String str : mList) {
if (str.indexOf(what) != -1) {
res.add(str);
}
}
return res;
}
}
Является ли метод search() потокобезопасным? А именно беспокоит одновременное итерирование по mList из разных потоков. Является ли эта операция безовасной при учёте того, что модификации mList не производится во время итерирования?