Возможный дубликат:
Разница между блокировкой (locker) и блокировкой (variable_which_I_am_using)
Во всех примерах кода, "невидочных", которые я видел, они блокируют отдельный объект-заглушку. Почему прямая блокировка выполняется непосредственно над данными?