Pull to refresh

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

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

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

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

А так как отдельно метода 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);

}

Ну вы поняли…

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

Total votes 8: ↑8 and ↓0+8
Comments0

Articles