Concurrency vs Parallelism
Concurrency is doing many things at the same time. Parallelism is splitting one big job into several small tasks onto multiple processors.
Heisenbugs
Bugs that appear due to different expectations with respect to scheduling.
Synchronization
As soon as one thread enters a synchronized method of Object O, no other thread can enter a synchronized method of Object O.
Threads v Processes
A process is a running program. Within one process, you can do multiple things at the same time. This is done by threads. Threads in a specific process work with the same piece of memory.