Sobes.tech
Junior — Middle

Akými metódami možno zabezpečiť bezpečný prístup k jednému objektu alebo jeho poľu z viacerých vlákien súčasne?

sobes.tech AI

Odpoveď od AI

Za zabezpečenie bezpečného prístupu k objektu alebo jeho poľu z viacerých vlákien v Jave sa používajú rôzne metódy synchronizácie:

  • Kľúčové slovo synchronized — umožňuje synchronizovať metódy alebo bloky kódu tak, aby ich mohol vykonávať iba jedno vlákno naraz.

  • Triedy z balíka java.util.concurrent, napríklad ReentrantLock — flexibilnejší mechanizmus zámkov.

  • Volatile polia — zabezpečujú viditeľnosť zmien v premennej medzi vláknami, ale nezaručujú atomickosť zložitých operácií.

  • Atómové triedy (AtomicInteger, AtomicReference atď.) — poskytujú atomické operácie bez zámkov.

  • Nemenné objekty — ak je objekt nemenný, je bezpečný na prístup z viacerých vlákien bez synchronizácie.

Príklad s synchronized:

public class Counter {
    private int count = 0;

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

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

Tento prístup zabezpečuje, že operácie nad count budú atomické a vlákna bezpečné.