In concurrent programming, synchronization is required when parallel threads attempt to access a shared resource.
A transaction is a collection of operations that can execute and commit changes as long as a conflict is not present.