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.