Verständnisfrage zu synchronized-Blöcken

Endymion

Bekanntes Mitglied
Hi, ich würde gerne wissen, ob es möglich ist, die add-Methode von ArrayList folgendermaßen threadsicher zu machen:

Java:
public class SafeList extends ArrayList {
    @Override
    public void add(E e) {
        synchronized {
            super.add(e);
        }
    }
}

Könnten so zwei Threads gleichzeitig in die gleiche SafeList schreiben, ohne, dass es eine CurrentModificationException ausgelöst wird?
 

Joew0815

Bekanntes Mitglied
Verwende doch
Java:
java.util.Collections.synchronizedList(java.util.List<T>)

Auszug:
Java:
        public void add(int index, E element) {
            synchronized (mutex) {list.add(index, element);}
        }
 

Marco13

Top Contributor
Könnten so zwei Threads gleichzeitig in die gleiche SafeList schreiben, ohne, dass es eine CurrentModificationException ausgelöst wird?

Eine einzelne Methode zu synchronisieren würde nicht viel bringen, weil z.B. ein "remove" noch gleichzeitig mit dem "add" ausgeführt werden könnte.

Aber wichtig: ConcurrentModificationException hat nicht direkt was mit Threads zu tun. Die kann auch bei einem einzelnen Thread auftreten.
 
S

SlaterB

Gast
noch eine Anmerkung: eine ConcurrentModificationException ist schon eine ziemlich hohe genaue Feststellung einer bestimmten Fehlsituation,
wenn die auftritt kann man sich noch für diesen genauen Hinweis bedanken, dürfte nur z.B. den Iterator betreffen,
der sich während eines Durchlaufs den Anfangszustand und dann auch Änderungen bemerkt

zwei add() durcheinander werfen keine ConcurrentModificationException!,
wenn es nicht gut geht,
gibts bestenfalls gibt es ArrayIndexOutOfBoundException oder ähnlich niederes bei der internen Arbeit,
gefährlicher noch wäre gar keine Exception aberam Ende einer der beiden Werte durch den anderen überschrieben..
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
C try-catch Block Verständnisfrage Allgemeine Java-Themen 14
RalleYTN Collections Verständnisfrage zu Objektreferenzen in Listen Allgemeine Java-Themen 5
O log4j - Verständnisfrage Allgemeine Java-Themen 1
M Verständnisfrage bei Hausaufgabe Allgemeine Java-Themen 7
L Getter und Setter Verständnisfrage Allgemeine Java-Themen 10
H MVC - Verständnisfrage Allgemeine Java-Themen 12
E Verständnisfrage bezüglich Threads Allgemeine Java-Themen 4
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
T Verständnisfrage bei Nachbarschaftsbetrachtung Allgemeine Java-Themen 8
M Verständnisfrage Exceptions Allgemeine Java-Themen 2
A Generics Verständnisfrage Allgemeine Java-Themen 7
J Verständnisfrage zu Casts auf Interfaces Allgemeine Java-Themen 5
J Verständnisfrage - nested static classes Allgemeine Java-Themen 11
J Verständnisfrage zu exceptions Allgemeine Java-Themen 3
J volatile Verständnisfrage Allgemeine Java-Themen 6
S JAAS - Verständnisfrage Allgemeine Java-Themen 2
G allgemein synchroniszed verständnisfrage Allgemeine Java-Themen 19
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
K Verständnisfrage. Allgemeine Java-Themen 9
T Eine Verständnisfrage Allgemeine Java-Themen 15
T Kleine Verständnisfrage zu Stringbuffer Allgemeine Java-Themen 2
sliwalker Verständnisfrage ObserverPattern Allgemeine Java-Themen 2
J Synchronized Probleme Allgemeine Java-Themen 7
D ReentrantLock oder Synchronized ? Allgemeine Java-Themen 3
B Threads synchronized Allgemeine Java-Themen 3
OnDemand Threads und synchronized Allgemeine Java-Themen 9
N Best Practice Semi-Synchronized Zugriff Allgemeine Java-Themen 0
J yield() Aufruf in einer synchronized-Methode Allgemeine Java-Themen 13
A Frage zu Synchronized Allgemeine Java-Themen 5
R Synchronized - auf welchem Objekt Allgemeine Java-Themen 16
R synchronized methode rekursiv aufrufen Allgemeine Java-Themen 5
P synchronized Allgemeine Java-Themen 4
S komplexe synchronized bedingungen Allgemeine Java-Themen 6
G synchronized Allgemeine Java-Themen 7
J Threads und synchronized Allgemeine Java-Themen 18
hdi synchronized & volatile Allgemeine Java-Themen 10
G zwei mal synchronized Allgemeine Java-Themen 5
J synchronized block mit this und wait() Allgemeine Java-Themen 5
M Verständnis "synchronized" Allgemeine Java-Themen 4
T Thread synchronized Allgemeine Java-Themen 5
Kr0e Synchronized Allgemeine Java-Themen 4
K synchronized und notify / notifyAll Allgemeine Java-Themen 8
G synchronized-Sclüsselwort: welche Reihenfolge zum Betreten? Allgemeine Java-Themen 6
R synchronized "gegen sich selbst" Allgemeine Java-Themen 5
R ConcurrentModificationException trotz synchronized? Allgemeine Java-Themen 12
R Thread-Problem, und synchronized bringt nix Allgemeine Java-Themen 4
J synchronized (bitte beantworten, urgent! danke) Allgemeine Java-Themen 11
H Ein synchronized Block ausreichend? Allgemeine Java-Themen 6
G synchronized Klasse? Allgemeine Java-Themen 6
G synchronized + threads Allgemeine Java-Themen 12
A deadlocks bei synchronized Allgemeine Java-Themen 3
K vector, synchronized und mehrere methoden Allgemeine Java-Themen 3
R return in try-catch-Blöcken Allgemeine Java-Themen 6
V Was tun mit "nötigen" Catch-Blöcken? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben