/ /スレッド固有データ-Java、マルチスレッド、スレッドセーフ

スレッド固有データ - Java、マルチスレッド、スレッドセーフ

ハッシュマップを維持する必要があります実行中のすべてのスレッドにパブリック。 たとえば、ある特定のスレッドによって更新されたハッシュマップは、他のスレッドでも利用可能である必要があり、その逆も同様です。 Javaでの実装を提案してください。

メインプログラムにはハッシュマップが含まれています。このメインスレッドから、多くのスレッドをトリガーします。各スレッドは、メインプログラムで使用可能な同じハッシュマップにアクセスする必要があります。

前もって感謝します。

回答:

回答№1は1

すべてのスレッドセーフデータ構造についてはこちらをご覧ください... http://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html

並行ハッシュマップが必要だと思います。マップをリストに変更できる場合、CopyOnWriteArrayListを使用して、リストへの書き込みを読み書きするための非常に効率的なtheadの安全な方法を使用できます。


回答№2の場合は1

Javaの問題は可変性を共有していない複数のスレッド間:オブジェクトへの参照をスレッドに渡すだけで簡単に実行できます。安全にアクセスする必要があることを忘れないでください...同時変更はトラブルになる可能性があります。 Javaの並行性のチュートリアルを確認することをお勧めします。これは非常に良い出発点です。 http://download.oracle.com/javase/tutorial/essential/concurrency/index.html


回答№3の場合は0

静的にしないでください-その方法は並行性の問題にあり、コードのテスト性を低下させます。代わりに、並行ハッシュマップを使用します。

http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html

そして、それへの参照を、それを必要とする各スレッドに渡します。


回答№4の場合は0

ハッシュマップは静的にすることができ、ClassNameを使用してスレッドでアクセスします。私はそれが1つの解決策だと思いますが、並行性が問題になるかもしれません。この問題に関して他の良い解決策を期待しています。