ThreadLocalは、同期またはスレッドセーフなオブジェクト アクセスに代わるものではありません。同じオブジェクトが異なるスレッドから ThreadLocal に割り当てられた場合、プログラムは以前よりもスレッドセーフではなくなります。同じオブジェクトが異なるスレッド間で引き続き共有されます。
ThreadLocal は変数のように機能します。つまり、オブジェクトを「命名」または「参照」します。
[ ThreadLocal ] はスレッド ローカル変数を提供します [.. そのようなもの] (その get または set メソッドを介して) 変数にアクセスする各スレッドは、独自の、独立して初期化された変数のコピーを持ちます。
つまり、ThreadLocal が行うことは、同じ ThreadLocalオブジェクトを使用するスレッド間の get/set 分離を提供することです。したがって、各スレッドは独自の異なるオブジェクトを ThreadLocal に割り当て/取得できます。ただし、これには、最初にさまざまなオブジェクトを割り当てるために「クローン」または新しいインスタンス化が必要です!
代入 (またはメソッド呼び出し)は、オブジェクトの暗黙的なクローン/コピー/複製を作成することはありません。これは ThreadLocal にまで及びます。