Thread-safe code without using the `synchronized` keyword?
java, multithreading
Solution
Actually, lots of ways:
- No need for synchronization at all if you don't have mutable state.
- No need for synchronization if the mutable state is confined to a single thread. This can be done by using local variables or `java.lang.ThreadLocal`.
- You can also use built-in synchronizers. `java.util.concurrent.locks.ReentrantLock` has the same functionality as the lock you access when using `synchronized` blocks and methods, and it is even more powerful.
Problem
What are the possible ways to make code thread-safe without using the `synchronized` keyword?