Package java.lang

Class ThreadLocal<T>

java.lang.Object
java.lang.ThreadLocal<T>
Direct Known Subclasses:
InheritableThreadLocal

public class ThreadLocal<T>
extends Object
Implements a thread-local storage, that is, a variable for which each thread has its own value. All threads share the same ThreadLocal object, but each sees a different value when accessing it, and changes made by one thread do not affect the other threads. The implementation supports null values.
Author:
Bob Lee
See Also:
Thread
  • Constructor Summary

    Constructors
    Constructor Description
    ThreadLocal()
    Creates a new thread-local variable.
  • Method Summary

    Modifier and Type Method Description
    T get()
    Returns the value of this variable for the current thread.
    protected T initialValue()
    Provides the initial value of this variable for the current thread.
    void remove()
    Removes the entry for this variable in the current thread.
    void set​(T value)
    Sets the value of this variable for the current thread.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ThreadLocal

      public ThreadLocal()
      Creates a new thread-local variable.
  • Method Details

    • get

      public T get()
      Returns the value of this variable for the current thread. If an entry doesn't yet exist for this variable on this thread, this method will create an entry, populating the value with the result of initialValue().
      Returns:
      the current value of the variable for the calling thread.
    • initialValue

      protected T initialValue()
      Provides the initial value of this variable for the current thread. The default implementation returns null.
      Returns:
      the initial value of the variable.
    • set

      public void set​(T value)
      Sets the value of this variable for the current thread. If set to null, the value will be set to null and the underlying entry will still be present.
      Parameters:
      value - the new value of the variable for the caller thread.
    • remove

      public void remove()
      Removes the entry for this variable in the current thread. If this call is followed by a get() before a set(T), #get() will call initialValue() and create a new entry with the resulting value.
      Since:
      1.5