This project consists in several examples of how race conditions affect the execution of not properly synchronized programs. Main classes are:
- Interleaving: Shows how several steps are overlapped by different thread executions.
- Unsafe*: Non synchronized programs that show the effects of a race condition.
- Safe*: Properly synchronized programs where its execution is not affected by race conditions.
Please take a look at the article about Atomicity and race conditions