| JavaTM 2 Platform Std. Ed. v1.4.2 
 
java.lang
Class ThreadLocal
java.lang.Object
   java.lang.ThreadLocal 
Direct Known Subclasses: InheritableThreadLocal 
 
public class ThreadLocalextends Object 
This class provides thread-local variables.  These variables differ from
 their normal counterparts in that each thread that accesses one (via its
 get or set method) has its own, independently initialized
 copy of the variable.  ThreadLocal instances are typically private
 static fields in classes that wish to associate state with a thread (e.g.,
 a user ID or Transaction ID).
  For example, in the class below, the private static ThreadLocal
 instance (serialNum) maintains a "serial number" for each thread
 that invokes the class's static SerialNum.get() method, which
 returns the current thread's serial number.  (A thread's serial number is
 assigned the first time it invokes SerialNum.get(), and remains
 unchanged on subsequent calls.)
  
 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();
     }
 }
 Each thread holds an implicit reference to its copy of a thread-local
 variable as long as the thread is alive and the ThreadLocal
 instance is accessible; after a thread goes away, all of its copies of
 thread-local instances are subject to garbage collection (unless other
 references to these copies exist).
 
 
 
Since:1.2 
 
 
| Method Summary |  
|  Object | get()Returns the value in the current thread's copy of this thread-local
 variable.
 |  
| protected  Object | initialValue()Returns the current thread's initial value for this thread-local
 variable.
 |  
|  void | set(Object value)Sets the current thread's copy of this thread-local variable
 to the specified value.
 |  
| Methods inherited from class java.lang.Object |  
| clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |  
 
ThreadLocal
public ThreadLocal() 
 
initialValue
protected Object initialValue() 
Returns the current thread's initial value for this thread-local
 variable.  This method will be invoked at most once per accessing
 thread for each thread-local, the first time the thread accesses the
 variable with the get()method.  The initialValue
 method will not be invoked in a thread if the thread invokes theset(Object)method prior to the get method.This implementation simply returns null; if the programmer
 desires thread-local variables to be initialized to some value other
 than null, ThreadLocal must be subclassed, and this
 method overridden.  Typically, an anonymous inner class will be used.
 Typical implementations of initialValue will invoke an
 appropriate constructor and return the newly constructed object.
 
 
Returns:the initial value for this thread-local 
 
get
public Object get() 
Returns the value in the current thread's copy of this thread-local
 variable.  Creates and initializes the copy if this is the first time
 the thread has called this method.
 
Returns:the current thread's value of this thread-local 
 
set
public void set(Object value) 
Sets the current thread's copy of this thread-local variable
 to the specified value.  Many applications will have no need for
 this functionality, relying solely on the initialValue()method to set the values of thread-locals.
 
Parameters:value- the value to be stored in the current threads' copy of
	      this thread-local. 
 Copyright 2003 Sun Microsystems, Inc. All rights reserved |