synchronized HashMap

Status
Nicht offen für weitere Antworten.

the_alien

Aktives Mitglied
Hi

Laut Java 1.4.2 API Dokumentation kann ich so
Code:
Map m = Collections.synchronizedMap(new HashMap(...));
eine Threadsichere HashMap erstellen. Allerdings verstehe ich den Abschnitt über den Iterator nicht.
Java 1.4.2 API Doku hat gesagt.:
The iterators returned by all of this class's "collection view methods" are fail-fast: if the map is structurally modified at any time after the iterator is created, in any way except through the iterator's own remove or add methods, the iterator will throw a ConcurrentModificationException. Thus, in the face of concurrent modification, the iterator fails quickly and cleanly, rather than risking arbitrary, non-deterministic behavior at an undetermined time in the future.

Note that the fail-fast behavior of an iterator cannot be guaranteed as it is, generally speaking, impossible to make any hard guarantees in the presence of unsynchronized concurrent modification. Fail-fast iterators throw ConcurrentModificationException on a best-effort basis. Therefore, it would be wrong to write a program that depended on this exception for its correctness: the fail-fast behavior of iterators should be used only to detect bugs.

Heißt das, wenn ich auf die HashMap zugreife und der andere Thread gerade darin schreibt kriege ich eine Exception?

Wenn ja: wie kann ich solange warten bis alle Modifikationen gemacht sind? geht das nur über ein solches Konstrukt?
Code:
synchronized(o){
//HashMap ändern oder lesen
}
 

Sky

Top Contributor
Die API hat gesagt.:
public class HashMap extends AbstractMap
implements Map, Cloneable, Serializable

Hash table based implementation of the Map interface. This implementation provides all of the optional map operations, and permits null values and the null key. (The HashMap class is roughly equivalent to Hashtable, except that it is unsynchronized and permits nulls.) [...]

Warum nimmst Du keine Hashtable? Die wäre dann auch synchronized.
 

the_alien

Aktives Mitglied
Wäre ja zu einfach :D

Danke für den kleinen Hinweis ;)

Wäre meine Vermutung über die Exception denn richtig?
 

meez

Top Contributor
So wie Vector eine synchronisierte Implementation der ArrayList ist...(Interface List)
 

Bleiglanz

Gesperrter Benutzer
>>Heißt das, wenn ich auf die HashMap zugreife
>>und der andere Thread gerade darin schreibt
>>kriege ich eine Exception?

was heisst zugreifen: es steht doch alles da...

Wenn du einen Iterator für die keys oder values geholt hast und gerade beim durchiterieren bist UND gleichzeitig ein anderer Thread an der HashMap veränderungen vornimmt DANN bekommst du beim nächsten Aufruf von next() eine Exception

BTW trifft das auch Vector/Hashtable usw. -> einen Iterator bzw. eine Enumeration solltest du bei multithreaded Schreibzugriffen NICHT verwenden
 

Bleiglanz

Gesperrter Benutzer
mit entrySet() kriegst du ein Set, dessen Einträge vom Typ Map.Entry sind, damit kannst du über die ganze Map iterieren
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
berserkerdq2 Wo finde ich in der Java Api die Notation zu Threads bezüglich Synchronized? Java Basics - Anfänger-Themen 14
A Thread - Synchronized Java Basics - Anfänger-Themen 10
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
O synchronized Java Basics - Anfänger-Themen 39
O synchronized difference Java Basics - Anfänger-Themen 5
E Synchronisierte Methoden vs. Synchronized(lockObject) Block Java Basics - Anfänger-Themen 7
T Was bringt das synchronized bei der Methode? Java Basics - Anfänger-Themen 12
temi Synchronized(Monitor) Java Basics - Anfänger-Themen 2
Z Threads Threads - Zugriff auf Ressourcen ohne(Lock, Synchronized) Java Basics - Anfänger-Themen 2
Shams Synchronized-Schlüsselwort bei Inkrementierung einer statischen Variable Java Basics - Anfänger-Themen 13
V Parameter in synchronized-Blöcken verstehen Java Basics - Anfänger-Themen 2
M Threads synchronized und wait Java Basics - Anfänger-Themen 2
N Threads Probleme mit synchronized Java Basics - Anfänger-Themen 9
B synchronized threads Java Basics - Anfänger-Themen 17
J Threads Synchronized Java Basics - Anfänger-Themen 6
U synchronized / lock Java Basics - Anfänger-Themen 8
P Arraylist synchronized? Java Basics - Anfänger-Themen 6
X3TitanCore Methoden synchronized bei einer Methode Java Basics - Anfänger-Themen 2
P synchronized methoden Java Basics - Anfänger-Themen 3
B warum schließt synchronized andere threads nicht aus? Java Basics - Anfänger-Themen 7
M Synchronized klappt nicht Java Basics - Anfänger-Themen 11
E synchronized Methoden Java Basics - Anfänger-Themen 3
M synchronized( ref ) Java Basics - Anfänger-Themen 3
I Synchronized Threads Java Basics - Anfänger-Themen 4
R Problem: Threads Synchronized machen Java Basics - Anfänger-Themen 5
M OOP Synchronized Methoden, zugriff aus Threads Java Basics - Anfänger-Themen 4
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
S Fragen zu synchronized + Singleton! Java Basics - Anfänger-Themen 10
S bin zu blöd für threads - wait, notify, synchronized Java Basics - Anfänger-Themen 11
J simple Frage zu synchronized Java Basics - Anfänger-Themen 4
S Threads: synchronized mach nicht was es soll? Java Basics - Anfänger-Themen 6
L Threads und synchronized Java Basics - Anfänger-Themen 8
R wait() in synchronized - Block oder nicht? Java Basics - Anfänger-Themen 4
X Synchronized Zugriff ArrayList<E> Java Basics - Anfänger-Themen 6
G synchronized Java Basics - Anfänger-Themen 5
M synchronized variables? Java Basics - Anfänger-Themen 8
B Verständnissfrage synchronized Java Basics - Anfänger-Themen 2
S Warum wirkt hier synchronized nicht? Java Basics - Anfänger-Themen 9
C Trotz "synchronized" unerwartete Ausgabe Java Basics - Anfänger-Themen 2
E Synchronized - Methoden in verschied. Klassen Java Basics - Anfänger-Themen 3
C synchronized Java Basics - Anfänger-Themen 2
J Fragen zu Synchronized Java Basics - Anfänger-Themen 6
L Problem mit synchronized und String Java Basics - Anfänger-Themen 2
A Problem mit Threads und synchronized Java Basics - Anfänger-Themen 3
B Was bedeutet synchronized? Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben