Answer
A race condition occurs when correctness depends on the relative timing of concurrent actions. • Unsynchronized read-modify-write operations are a common cause. • A data race is a specific Java Memory Model condition involving conflicting accesses without happens-before ordering. • Locks, atomics, immutability, confinement, or message passing can remove races.
Example
Code
java.util.concurrent.atomic.AtomicInteger count = new java.util.concurrent.atomic.AtomicInteger(); count.incrementAndGet();
Quick Revision
Race conditions make results timing-dependent; use defined synchronization or isolation.