Летучий против Блокированный против блокировки

Допустим, у класса есть public int counterполе, доступ к которому осуществляется несколькими потоками. Это intтолько увеличивается или уменьшается. Чтобы увеличить это поле, какой подход следует использовать и почему? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);,...