サーバーの起動時に初期化される静的なHashMap
があります。クライアントはログイン時にこのマップからデータを初期化します。
このマップを更新する必要がありますが、クライアントはこのマップから同時にログインしてデータを取得できます。クライアントが読み込み中にHashMapをリフレッシュする方法
マップの参照を以下のように変更することはできますか? 私はを使用できません。同時に読み取ることができ、1つのスレッドしか書いていないからです。
public void refresh() {
synchronized (MyClass.class) {
Map<String, Object> newMap = prepareData();
map = Collections.unmodifiableMap(newMap);
}
}
そして、あなたのマップを:すべてのマップの
public void refresh() {
Map<String, Object> newMap = prepareData();
map = newMap;
}
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html –
可能な重複http:// stackoverflow。com/questions/28147889/how-to-lock-a-hashmap-refresh中 – nyname00