Как стать автором
Обновить
153
0
Громов Андрей @rjhdby

И то и сё

Отправить сообщение

Довольно частый сценарий использования атомиков в качестве счётчиков выглядит так:

  • Запускаем длительную обработку чего-либо

  • Долго и нудно его инкрементим

  • По завершению один раз читаем (ну, либо, читаем с некоторой периодичностью, для отображения прогресса)

А так как отдельно метода increment() у него нет, то используются штатные getAndIncrement() либо incrementAndGet() без использования возвращаемого значения. Например:

public void frequentlyCalledMethod(){    
    doSomeWork();    
    counter.incrementAndGet();
}

Или может getAndIncrement()? Хм… А в чём, собственно, разница, кроме очевидного из имени методов?

public final int incrementAndGet() {
   return U.getAndAddInt(this, VALUE, 1) + 1;
}
public final int getAndIncrement() {
   return U.getAndAddInt(this, VALUE, 1);

}

Ну вы поняли…

Мелочь конечно, но если всё равно отбрасываем результат, то зачем нам лишняя операция?

Всего голосов 8: ↑8 и ↓0+8
Комментарии0

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Зарегистрирован
Активность