Any problems with threads?
What if multiple threads are sharing data in a program?
Canonical example: ATM machines
You withdraw $$ at the exact same time co-owner of the account withdraws $$ . . .
Two threads operating on the same data . . .
Need a way to guarantee that threads do not access shared data at the same time