81 подписчик
🖥 Совет по использованию атомиков
Довольно частый сценарий использования атомиков в качестве счётчиков выглядит так:
🔘Запускаем длительную обработку чего-либо
🔘Долго и нудно его инкрементим
🔘По завершению один раз читаем (ну, либо, читаем с некоторой периодичностью, для отображения прогресса)
А так как отдельно метода 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);
}
Ну вы поняли. Мелочь конечно, но если всё равно отбрасываем результат, то зачем нам лишняя операция?
Около минуты
5 марта 2024