Sobes.tech
Junior — Middle

Môžeš vysvetliť, ako používať mechanizmy blokovania pri práci s viacvláknovým programovaním?

sobes.tech AI

Odpoveď od AI

V Jave se používajú rôzne mechanizmy zámkov, ktoré umožňujú synchronizovať prístup ku spoločným zdrojom a predchádzať podmienkam súťaže.

Hlavné spôsoby:

  • synchronized — kľúčové slovo, ktoré možno použiť na metódy alebo bloky kódu. Zabezpečuje exkluzívny prístup k monitoru objektu.
public synchronized void increment() {
    counter++;
}
  • java.util.concurrent.locks.Lock — rozhranie, ktoré ponúka flexibilnejšie možnosti zámkov ako synchronized. Napríklad, je možné explicitne získať a uvoľniť zámok.
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

Lock lock = new ReentrantLock();

lock.lock();
try {
    // kritická sekcia
} finally {
    lock.unlock();
}
  • ReadWriteLock — umožňuje oddeliť zámky pre čítanie a zápis, čo zvyšuje výkon pri veľkom počte operácií čítania.

Použitie zámkov pomáha vyhnúť sa problémom s konkurenčným prístupom, ako sú podmienky súťaže a deadlocky, ak sa správne riadi poradie získavania a uvoľňovania zámkov v bloku finally.