У меня есть ArrayList
из String
s и два потока одновременно обращаются к списку. Что будет выводить следующий фрагмент и почему?Каким будет выход, доступ к списку для разных потоков?
public static void main(String[] args) {
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
list.add("Number" + i);
}
new Thread() {
public void run() {
for (String s : list) {
System.out.println(s);
}
}
}.start();
new Thread() {
public void run() {
list.remove("Number5");
}
}.start();
}
Я попытался использовать тот же код, что делает Arraylist
синхронизированы с помощью Collections.synchronizedList(list)
. Он все еще бросает java.util.ConcurrentModificationException
.
Вы хотите спросить: «Является ли эта функция безопасной?»? –