Interface ThreadState

All Known Implementing Classes:
SubjectThreadState

public interface ThreadState
A ThreadState instance manages any state that might need to be bound and/or restored during a thread's execution.

Usage

Calling bind() will place state on the currently executing thread to be accessed later during the thread's execution.

WARNING

After the thread is finished executing, or if an exception occurs, any previous state MUST be restored to guarantee all threads stay clean in any thread-pooled environment. This should always be done in a try/finally block:
 ThreadState state = //acquire or instantiate as necessary
 try {
     state.bind();
     doSomething(); //execute any logic downstream logic that might need to access the state
 } finally {
     state.restore();
 }
 
Since:
1.0
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Binds any state that should be made accessible during a thread's execution.
    void
    Completely clears/removes the ThreadContext state.
    void
    Restores a thread to its state before bind bind was invoked.
  • Method Details

    • bind

      void bind()
      Binds any state that should be made accessible during a thread's execution. This should typically always be called in a try/finally block paired with the restore() call to guarantee that the thread is cleanly restored back to its original state. For example:
       ThreadState state = //acquire or instantiate as necessary
       try {
           state.bind();
           doSomething(); //execute any logic downstream logic that might need to access the state
       }  finally {
           state.restore();
       }
       
    • restore

      void restore()
      Restores a thread to its state before bind bind was invoked. This should typically always be called in a finally block to guarantee that the thread is cleanly restored back to its original state before bind's bind was called. For example:
       ThreadState state = //acquire or instantiate as necessary
       try {
           state.bind();
           doSomething(); //execute any logic downstream logic that might need to access the state
       } finally {
           state.restore();
       }
       
    • clear

      void clear()
      Completely clears/removes the ThreadContext state. Typically this method should only be called in special cases - it is more 'correct' to restore a thread to its previous state than to clear it entirely.