Вам не нужно сигнализировать о каждом путе. То есть, если проверка была c != 0
, то каждый раз, когда вы кладете что-то, вы будете сигнализировать, что вы не пусты, но никто не будет сигнализировать, если вы ранее не были пустыми. Таким образом, c == 0
гарантирует, что вы подаете сигнал только тогда, когда очередь меняет с пустого состояния на непустое состояние.
Сравнение c == 0, а не c == 1, так как вызов count является "getAndIncrement", поэтому возвращается 0, а затем увеличивается счетчик.
Редактировать: Видимо, кто-то уже до меня дошел: \