ThreadLocal

Overview | Package | Class | Use | Tree | Deprecated | Index | Help

PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## java.lang
Class ThreadLocal

    java.lang.Object
      java.lang.ThreadLocal

Direct Known Subclasses:
  InheritableThreadLocal

    public class ThreadLocal

extends 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
Version:
  1.21, 03/12/05
Author:
  Josh Bloch and Doug Lea

Constructor Summary
`ThreadLocal()`

Method Summary
`Object` | `get()` Returns the value in the current thread's copy of 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
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ThreadLocal

    public ThreadLocal()

Method Detail

### 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.

Overview | Package | Class | Use | Tree | Deprecated | Index | Help

PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD