Race conditions occur when an action is being performed in a multiple-threaded web application on the same data. It basically produces unexpected results when the timing of one action being performed will impact the other action.
Some examples of an application having a race-condition vulnerability can be an application that allows the transfer of credit from one user to another or an application that allows a voucher code to be added for a discount, but that also has a race condition that allows an attacker to use the same code multiple times.