Some additin to Que - Why we need 4 types of synchronization objects ? What is the exact diff between these?