Sobes.tech
Middle

Ποιοι είναι άλλοι τρόποι αντιμετώπισης του αγώνα νημάτων, εκτός από τη χρήση της λέξης-κλειδιού volatile;

sobes.tech AI

Απάντηση από AI

Μουτέξ (ενότητες ή συναρτήσεις συγχρονισμένες, API Lock), ατομικές μεταβλητές (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();
}