Was sind die möglichen Probleme, die durch das gleichzeitige Hinzufügen von Elementen zu nicht synchronisierten ArrayList-Objekten durch mehrere Threads verursacht werden?

Was sind die möglichen Probleme, die durch das Hinzufügen von Elementen zu unsynchronized @ verursacht werdeAnordnungslist 's Objekt von mehreren Threads gleichzeitig?

Versuchte einige Experimente mit einer statischen ArrayList mit mehreren Threads durchzuführen, konnte aber nicht viel finden.

Hier erwarte ich einen Großteil der Nebenwirkungen, wenn ich eine ArrayList oder ähnliche Objekte in einer Multithread-Umgebung nicht synchronisiere.

Jedes gute Beispiel, das Nebenwirkungen zeigt, wäre bemerkenswert. Vielen Dank

below ist mein kleines Experiment, das ausnahmslos reibungslos lief.

Ich frage mich auch, warum es keine @ werfConcurrentModificationException?

import java.util.ArrayList;
import java.util.List;

public class Experiment {
     static List<Integer> list = new ArrayList<Integer>();
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println("A " + i);
            new Thread(new Worker(list, "" + i)).start();
        }
    }   
}

class Worker implements Runnable {
    List<Integer> al;
    String name;

    public Worker(List<Integer> list, String name) {
        this.al = list;
        this.name = name;
    }

    @Override
    public void run() {
        while (true) {
            int no = (int) (Math.random() * 10);
            System.out.println("[thread " + name + "]Adding:" + no + "to Object id:" + System.identityHashCode(al));
            al.add(no);
        }
    }
}

Antworten auf die Frage(8)

Ihre Antwort auf die Frage