|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.lang.ThreadLocal
public class ThreadLocal
このクラスはスレッドローカル変数を提供します。これらの変数は、get メソッドまたは set メソッドを使ってアクセスするスレッドがそれぞれ独自に、変数の初期化されたコピーを持つという点で、通常の変数と異なります。通常、ThreadLocal インスタンスは、状態をスレッドに関連付けようとするクラスでの private static フィールドです (ユーザー ID、トランザクション ID など)。
たとえば、次に示すクラスでは、private static ThreadLocal インスタンス (serialNum) が、現在のスレッドのシリアル番号を返す、クラスの static SerialNum.get() メソッドを呼び出す各スレッドの「シリアル番号」を管理します。スレッドのシリアル番号は、SerialNum.get() の最初の呼び出し時に割り当てられ、その後の呼び出しで変更されることはありません。
public class SerialNum { // The next serial number to be assigned private static int nextSerialNum = 0; private static ThreadLocal serialNum = new ThreadLocal() { protected synchronized Object initialValue() { return new Integer(nextSerialNum++); } }; public static int get() { return ((Integer) (serialNum.get())).intValue(); } }
各スレッドは 、スレッドが生存していて ThreadLocal インスタンスがアクセス可能である間は、スレッドローカル変数のコピーへの暗黙的な参照を保持します。スレッドが終了すると、スレッドローカルインスタンスのコピーは、すべてガベージコレクトされます (これらのコピーへの参照がほかに存在する場合を除く)。
コンストラクタの概要 | |
---|---|
ThreadLocal()
|
メソッドの概要 | |
---|---|
Object |
get()
このスレッドローカル変数の現行スレッドのコピー内の値を返します。 |
protected Object |
initialValue()
このスレッドローカル変数に対する現在のスレッドの初期値を返します。 |
void |
set(Object value)
このスレッドローカル変数の現在のスレッドのコピーを指定された値に設定します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public ThreadLocal()
メソッドの詳細 |
---|
protected Object initialValue()
get()
メソッドを使用した変数への初回アクセス時に、各スレッドローカルに対しスレッドへのアクセスごとに最大で 1 回呼び出されます。スレッドが get メソッドより前に set(Object)
メソッドを呼び出す場合、initialValue メソッドはスレッド内で呼び出されません。
この実装は、単に null を返すだけです。プログラマがスレッドローカル変数が null 以外の値に初期化されるようにする場合、ThreadLocal をサブクラス化して、このメソッドをオーバーライドする必要があります。通常、匿名の内部クラスが使用されます。initialValue の通常の実装では、対応するコンストラクタが呼び出され、新しく構築されたオブジェクトが返されます。
public Object get()
public void set(Object value)
initialValue()
メソッドに大きく依存しているため、この機能は必要ありません。
value
- このスレッドローカルの現在のスレッドのコピーに格納される値
|
Foundation 1.1.2 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。