ThreadSynchronizationInJava A simple learning project that demonstrates ways to solve such multithreading problems as race conditions, deadlocks, and producer-consumer problem. The project forms the basis of the following tutorials: What is a Race Condition in Java, and how it can be prevented using synchronized and AtomicInteger How to solve the producer-consumer problem in Java