Sobes.tech
Junior — Middle

Vysvětlete mechanismus fungování třídy AtomicInteger a její roli při implementaci vláknově bezpečných operací.

sobes.tech AI

Odpověď od AI

Třída AtomicInteger z balíčku java.util.concurrent.atomic poskytuje celočíselnou hodnotu, jejíž operace jsou prováděny atomicky, tj. nedělitelné a bez rizika závodních podmínek v prostředí s více vlákny.

Mechanismus fungování je založen na použití nízkoúrovňových hardwarových instrukcí (například CAS — compare-and-swap), které zaručují, že operace změny hodnoty probíhají bez přerušení a bez konfliktů mezi vlákny.

Role AtomicInteger je zajistit vlákny bezpečné operace inkrementace, dekrementace, nastavení a porovnání bez nutnosti používat synchronizované bloky nebo explicitní zámky, což zvyšuje výkon a zjednodušuje kód.

Příklad použití:

import java.util.concurrent.atomic.AtomicInteger;

public class Counter {
    private AtomicInteger count = new AtomicInteger(0);

    public void increment() {
        count.incrementAndGet(); // atomické zvýšení
    }

    public int getCount() {
        return count.get();
    }
}

V tomto příkladu mohou více vláken bezpečně volat increment() bez rizika ztráty aktualizací čítače.