2016-10-26 3 views
-3

Bitte legen Sie fest, welche Karte für das Caching verwendet werden kann.Java-Map-Cache für mehrere Threads

Mein Anwendungsfall ist ein hoch Multi-Threaded-Server, den ich gerne synchronisieren würde Karte setzen, aber Get Map ist nicht synchronisiert.

Meine Erwartung ist: Wenn Put passiert, dann sollte eine sofortige erhalten die neuesten aktualisierten Werte haben.

Für unseren Anwendungsfall Synchronisation möglicherweise nicht für die gesamte Karte während des Put immer erforderlich, was wir jetzt tun, Es sollte nur synchronisiert werden, wenn der gleiche Wert versucht, geladen werden.

+2

Bei der Multi-Thread-Programmierung sollte ** all ** der Zugriff auf das gemeinsame Objekt synchronisiert werden. Es ist einfach nicht richtig, nur synchronisiertes Schreiben zu haben. –

Antwort

1

ConcurrentHashMap ist die richtige Antwort hier, da es sicher ist, gleichzeitig von mehreren Threads zu verwenden. Wenn Sie eine Bibliotheksabhängigkeit hinzufügen können, ist Guava's Cache möglicherweise das, wonach Sie suchen.

Was müssen Sie nicht tun, ist eine HashMap oder andere Thread unsichere Struktur ohne richtige Synchronisierung auf nutzt jeden Betrieb, sowohl Lese- als auch mutiert. Das ist einfach nicht threadsicher und kann in terrible ways fehlschlagen.

Verwandte Themen