It occurs when two or more processes are reading or writing some shared data and the final result depends on who runs precisely when.