Насколько я поняла он нужен для того, чтобы пока один поток не выполнит блок кода, другой не начинал его вполнение. Но там всего одно присваивание. Я понимаю, если бы было много команд.