0

コンストラクターで ConcurrentHashMap を受け入れるサーブレットに次のスレッドがあります。

RequestThread(ConcurrentHashMap<String, String[]> sentRequests, ServletContext context) {
        this.sentRequests = sentRequests;
        this.context = context;
    }

複数のユーザーが ConcurrentHashMap にアクセスします。すべてのクラスで使用されることになっています。

そのような方法で ConcurrentHashMap を渡すことはスレッドセーフですか、それとももっと良い方法がありますか?

4

1 に答える 1

0

この場合、ConcurrentHashMapスレッドセーフであることが重要です。どのように渡すかは重要ではありません。そしてドキュメントによると:

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

于 2013-11-06T14:28:01.117 に答える