オブジェクトの保存の問題は、プログラムの研究を行うときに常に懸念されてきました。同じ操作が ThreadLocal にも存在し、オブジェクトを保存および取得できます。これには、ThreadLocal とその set メソッドの使用についてある程度の理解が必要です。以下では、ThreadLocal のストレージと取得の完全な操作手順を説明し、具体的な内容を共有します。
1. ThreadLocalのsetメソッド
public void set(T 値) { スレッド t = Thread.currentThread(); ThreadLocalMap マップ = getMap(t); if (マップ != null) map.set(this, value); それ以外 createMap(t, 値); }
ThreadLocal の set メソッドを通じて、ThreadLocalMap の <k, v> 構造では、キーが ThreadLocal 自体を格納し、値が実際に格納された値、つまり、 によってコピーされた変数のコピーであることがわかります。現在の ThreadLocal は ThreadLocalMap に保存されます。
2. ThreadLocal 自体は値を保存しません。使用時には、ThreadLocalMap から値を取得するためのキーとして使用されます。これは、ThreadLocal の get メソッドからもわかります。
public T get() { スレッド t = Thread.currentThread(); ThreadLocalMap マップ = getMap(t); if (マップ != null) { ThreadLocalMap.Entry e = map.getEntry(this); if (e != null) { @SuppressWarnings("未チェック") T 結果 = (T)e.value; 結果を返します。 } } setInitialValue() を返します。 }
以上がJava ThreadLocalのオブジェクトの保存と取得でしたが、setの使い方を使いこなすことがポイントです。この方法に十分に習熟していない場合は、授業後にさらに練習する必要があります。