4 дня назад
☕️ Java-совет: `LongAdder` вместо `AtomicLong` для горячих счётчиков
Частая ошибка в высоконагруженных системах: private final AtomicLong requests = new AtomicLong(); requests.incrementAndGet(); Проблема: все потоки конкурируют за одну переменную. Много потоков → больше CAS-коллизий → меньше производительность. Для метрик лучше: private final LongAdder requests = new LongAdder(); requests.increment(); Как работает: AtomicLong: Thread 1 ─┐ Thread 2 ─┼──> [100000] Thread 3 ─┘ LongAdder: Thread 1 → [10] Thread 2 → [20] Thread 3 → [15] ↓ sum() LongAdder распределяет обновления между несколькими ячейками памяти, снижая конкуренцию...