Sobes.tech
Junior — Middle

Kādas metodes var izmantot sacensību stāvokļa novēršanai daudzšūnu vidē?

sobes.tech AI

Atbilde no AI

Lai novērstu sacensību stāvokli (race condition) daudzšūnu vidē, tiek izmantotas šādas metodes:

  • Sinhronizācija (synchronized) — kritisko koda sekciju bloķēšana, lai tikai viens pavediens varētu tās izpildīt vienlaikus.
  • Izmantojot java.util.concurrent klases — piemēram, ReentrantLock, AtomicInteger, ConcurrentHashMap.
  • Kopīgas stāvokļa novēršana — izstrādājot pavedieniem drošas datu struktūras vai izmantojot nemaināmus objektus.
  • Izmantojot volatile — nodrošināt mainīgo redzamību starp pavedieniem.

Piemērs ar synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Šeit metodes increment un getCount ir sinhronizētas, lai novērstu vienlaicīgu piekļuvi un sacensību stāvokli.