Objasnite mehanizam rada klase AtomicInteger i njenu ulogu u implementaciji operacija koje su bezbedne za niti.
sobes.tech АИ
Одговор од АИ
Класа AtomicInteger из пакета java.util.concurrent.atomic пружа целобројну вредност чије операције се изводе атомски, односно недељиви и без ризика од тркаћих услова у мулти-тред окружењу.
Механизам рада се заснива на коришћењу нискоуровњских хардверских инструкција (нпр., CAS — compare-and-swap), које гарантују да операције промене вредности одвијају без прекида и конфликата између тредова.
Улога AtomicInteger је да обезбеди тред-сигурне операције за инкрементацију, декрементацију, постављање и поређење без потребе за коришћењем синхронизованих блокова или експлицитних закључавања, што побољшава перформансе и поједностављује код.
Пример употребе:
import java.util.concurrent.atomic.AtomicInteger;
public class Counter {
private AtomicInteger count = new AtomicInteger(0);
public void increment() {
count.incrementAndGet(); // атомско увећање
}
public int getCount() {
return count.get();
}
}
У овом примеру, више тредова може безбедно да позове increment() без ризика да изгуби ажурирања бројача.