User level threads:
- More efficient (order or magnitude) - almost like calling a procedure.
- The user can better control the scheduling algorithm.
- However, user does not know that the whole process was “out”...
Kernel level threads:
- Blocking I/O of one thread does not affect another thread.
- Thread scheduling is fairer.