Sobes.tech
Junior — Middle

Kādiem metodiem var nodrošināt drošu piekļuvi vienam objektam vai tā laukam no vairākiem pavedieniem vienlaikus?

sobes.tech AI

Atbilde no AI

Lai nodrošinātu drošu piekļuvi objektam vai tā laukam no vairākiem pavedieniem Java valodā, tiek izmantotas dažādas sinhronizācijas metodes:

  • Atslēgas vārds synchronized — ļauj sinhronizēt metodes vai koda blokus, lai tos varētu izpildīt tikai viens pavediens vienlaikus.

  • Klases no java.util.concurrent pakotnes, piemēram, ReentrantLock — elastīgāks bloķēšanas mehānisms.

  • Volatile lauki — garantē izmaiņu redzamību starp pavedieniem, bet nesniedz atomaritāti sarežģītām operācijām.

  • Atomu klases (AtomicInteger, AtomicReference utt.) — nodrošina atomiskas operācijas bez bloķēšanas.

  • Nemainīgi objekti — ja objekts ir nemainīgs, tas ir drošs piekļuvei no vairākiem pavedieniem bez sinhronizācijas.

Piemērs ar synchronized:

public class Counter {
    private int count = 0;

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

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

Šī pieeja garantē, ka operācijas ar count būs atomiskas un pavedienu drošas.