Ja und Nein Threas sicher nur unscharf definiert als sobald Sie den Umfang erweitern. Im Allgemeinen implementieren gleichzeitige Sammlungen alle ihre Methoden in einer Weise, die einen gleichzeitigen Zugriff durch mehrere Threads ermöglichen, oder, wenn sie nicht können, Mechanismen bereitstellen, um solche Zugriffe (z. B. Synchronisation) transparent zu serialisieren. Daher sind sie sicher in dem Sinne, dass sie sicherstellen, dass sie eine gültige interne Struktur beibehalten und Methodenaufrufe gültige Ergebnisse liefern.
Die Unschärfe beginnt, wenn Sie sich die Details anschauen, z. toArray() wird Ihnen eine Art von Snapshot des Inhalts der Sammlungen zurückgeben. Es gibt keine Garantie dafür, dass der Inhalt zum Zeitpunkt der Rückgabe der Methode nicht bereits geändert wurde. Während also der Aufruf threadsicher ist, wird das Ergebnis nicht die üblichen Invarianten erfüllen (z. B. kann der Array-Inhalt nicht den Sammlungen entsprechen).
Wenn Konsistenz über den Umfang der Aufrufe einer parallelen Sammlung erforderlich ist, müssen Mechanismen innerhalb des Codes bereitgestellt werden, die die Methoden aufrufen, um die erforderliche Konsistenz zu gewährleisten.
Vielleicht kann dieser Artikel für Sie interessant sein: http://crunchify.com/hashmap-vs-concurrenthashmap-vs-synchronizedmap-how-a-hashmap-can-be-synchronized-in-java/ – thoeni
Beachten Sie, dass die Cast in 'String []' ist auch falsch. – user2357112