以下のリンク を確認しました String オブジェクトの同期に問題がありますか? および http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html
今私の質問:
- ユーザーIDといくつかのプロパティのリストが保持されているマップがあります
- 新しいユーザー ID に遭遇したら、マップにエントリを作成します。
- ユーザー ID が既に存在する場合は、いくつかのプロパティを値に追加します。
マップ全体で同期する代わりに、ユーザー ID で同期しようとしたため、ランダムな動作が発生しました。intern() を使用すると、2 番目のリンクのアプローチも機能します。
質問:
- 2番目のアプローチでは、キーを取得するときにマップ全体をロックしています
- ユーザーIDのみに基づいてマップアクセスが同期されるように、他の同期方法はありますか
- これを行う最良の方法は何ですか?