Middle
Koji su drugi načini za borbu sa trkaćim uslovima niti, osim korišćenja ključne reči volatile?
sobes.tech АИ
Одговор од АИ
Мутекси (синхронизовани блокови или функције, Lock API), атомске променљиве (AtomicInteger, AtomicBoolean итд.), семафори, монитори, канали (за пренос података између нити), и коришћење структура података безбедних за паралелни приступ (на пример, ConcurrentHashMap, CopyOnWriteArrayList).
// Пример са synchronized блоком
private final Object lock = new Object();
private int count = 0;
public void increment() {
synchronized (lock) {
count++;
}
}
// Пример са AtomicInteger
private final java.util.concurrent.atomic.AtomicInteger atomicCount = new java.util.concurrent.atomic.AtomicInteger(0);
public void incrementAtomic() {
atomicCount.incrementAndGet();
}