JavaTM 2
Platform
Std. Ed. v1.4.0

java.lang
クラス ThreadLocal

java.lang.Object
  |
  +--java.lang.ThreadLocal
直系の既知のサブクラス:
InheritableThreadLocal

public class ThreadLocal
extends Object

このクラスはスレッドローカル変数を提供します。これらの変数は、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 インスタンスがアクセス可能である間は、スレッドローカル変数のコピーへの暗黙的な参照を保持します。スレッドが終了すると、スレッドローカルインスタンスのコピーは、すべてガベージコレクトされます (これらのコピーへの参照がほかに存在する場合を除く)。

導入されたバージョン:
1.2

コンストラクタの概要
ThreadLocal()
           
 
メソッドの概要
 Object get()
          このスレッドローカル変数の現行スレッドのコピー内の値を返します。
protected  Object initialValue()
          このスレッドローカルな変数に対する現行スレッドの初期値を返します。
 void set(Object value)
          このスレッドローカル変数の現行スレッドのコピーを、指定された値に設定します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ThreadLocal

public ThreadLocal()
メソッドの詳細

initialValue

protected Object initialValue()
このスレッドローカルな変数に対する現行スレッドの初期値を返します。このメソッドは、各スレッドローカルのスレッドにアクセスする際に一度、各スレッドが get() または set(Object) メソッドを使用して最初に変数にアクセスする際に呼び出されます。プログラマがスレッドローカル変数を null 以外の値で初期化する場合、ThreadLocal をサブクラス化して、このメソッドをオーバーライドする必要があります。通常、匿名の内部クラスが使用されます。initialValue の典型的な実装は、適切なコンストラクタを呼び出して、新たに構築されたオブジェクトを返します。

戻り値:
このスレッドローカルの初期値

get

public Object get()
このスレッドローカル変数の現行スレッドのコピー内の値を返します。スレッドで初めてこのメソッドが呼び出されたときは、コピーが作成されて初期化されます。

戻り値:
このスレッドローカルの現行スレッドの値

set

public void set(Object value)
このスレッドローカル変数の現行スレッドのコピーを、指定された値に設定します。これは、initialValue メソッドによって代入された値を変更する場合にだけ使用されます。多くのアプリケーションではこの機能は必要ありません。

パラメータ:
value - このスレッドローカルの現行スレッドのコピーに格納される値

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.