java-design-patterns icon indicating copy to clipboard operation
java-design-patterns copied to clipboard

Implement Thread-Specific Storage Pattern

Open iluwatar opened this issue 9 months ago • 6 comments

Description

Thread-Specific Storage is a concurrency design pattern where each thread retains its own instance of a shared object, typically achieved using ThreadLocal<T> in Java. By isolating data to each thread, you avoid synchronization overhead and minimize concurrency issues. Common use cases include storing thread-specific contexts, caching stateful objects like DateFormat, or managing per-thread counters without risking data corruption or race conditions.

Key Elements

  • Isolation of State: Each thread has its own copy of the data, reducing shared mutable state.
  • ThreadLocal Utility: Java’s ThreadLocal<T> class provides a straightforward way to store data private to each thread.
  • Initialization & Cleanup: Properly initializing and cleaning up thread-local data is crucial to prevent memory leaks.
  • Practical Use Cases: Storing per-thread data such as locale-specific formatters, current transaction context, or local caches.

References

  1. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects
  2. Java Design Patterns - Contribution Guidelines

Acceptance Criteria

  • [ ] A new module or package named thread-specific-storage (or similar) is added.
  • [ ] Demonstrates a clear use case of storing and retrieving thread-local data (e.g., per-thread state).
  • [ ] Includes a readme (or .md file) explaining how the pattern works, with code examples or diagrams.
  • [ ] Adheres to the repository’s coding style and naming conventions.
  • [ ] Includes unit tests verifying behavior in a multi-threaded scenario.
  • [ ] Passes all CI checks and meets the project’s contribution guidelines.

iluwatar avatar Mar 30 '25 09:03 iluwatar

Hello @iluwatar .I would like to work on this .Could you assign it to me? It would be a great opportunity to learn!

CMD137 avatar May 31 '25 03:05 CMD137

Hey @iluwatar, I'm currently working on a thread-safety related topic in Java and am craving for some hands on practice. Feel free to assign me for this issue so I can start right away!

MFrikken avatar Jul 06 '25 11:07 MFrikken

If there’s no objection, I’ll start implementing this now and submit a PR. 🚀

CMD137 avatar Sep 26 '25 03:09 CMD137

Is someone working on this already , No one is assigned yet. Else please assign it to me.

RitikaMathur19 avatar Oct 15 '25 05:10 RitikaMathur19

Hi, I’d like to work on this issue . Could you please assign it to me?

kdt523 avatar Oct 17 '25 18:10 kdt523

doing it .

quantambites avatar Oct 22 '25 15:10 quantambites