Thread Scheduler
- The thread scheduler runs each thread for a short amount of time (a time slice)
- Then the scheduler activates another thread
- There will always be slight variations in running times
especially when calling operating system services (e.g. input and output)
- There is no guarantee about the order in which threads are executed