-6

HashMap を Synchronized に変更することは可能ですか。もしそうなら、変更方法を教えてください。

4

4 に答える 4

3

HashMap を同期するには、次を使用できます。

Collections.synchronizedMap(<your hashmap reference>) 

これにより、スレッドセーフな同期マップが返されます。

于 2012-12-02T12:44:44.913 に答える
2

ConcurrentHashMap同期された実装の 1 つです。

javadocに従って

取得の完全な同時実行性と更新の調整可能な予想同時実行性をサポートするハッシュ テーブル。このクラスは、Hashtable と同じ機能仕様に従い、Hashtable の各メソッドに対応するバージョンのメソッドを含みます。ただし、すべての操作はスレッドセーフですが、検索操作はロックを必要とせず、すべてのアクセスを防止する方法でテーブル全体をロックすることはサポートされていません。このクラスは、スレッド セーフに依存しているが同期の詳細には依存していないプログラムで、Hashtable と完全に相互運用可能です。

于 2012-12-02T12:41:54.593 に答える
1
Collections.synchronizedMap(map);

指定されたマップに基づく同期 (スレッドセーフ) マップを返します。シリアル アクセスを保証するには、バッキング マップへのすべてのアクセスが、返されたマップを介して行われることが重要です。

ドキュメント: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#synchronizedMap%28java.util.Map%29

于 2012-12-02T12:43:23.980 に答える
1

使用するCollections.synchronizedMap(new HashMap());

于 2012-12-02T12:42:32.523 に答える