Thread-specific storage pattern
A single logical global access point can be used to retrieve an object local to the thread. This concurrency design pattern allows multiple threads to carry this function out. This is done without incurring locking overhead on each access to the object. Sometimes, this particular pattern can be viewed as an antithesis among all the concurrency design patterns. This is due to the fact that several complexities are addressed by the thread-specific storage by prevention of sharing of the available resources among the threads.
The method appears to be invoked on an ordinary object by the application thread. Actually, it is invoked on a thread-specific object. A single thread-specific object proxy can be used by multiple application threads for accessing the unique thread-specific objects associated to each of them. The proxy to distinguish between the thread-specific object it encapsulates uses the application thread identifier.