Sobes.tech
Junior — Middle

Můžeš vysvětlit, jak používat mechanismy blokování při práci s více vlákny?

sobes.tech AI

Odpověď od AI

V jazyce Java se používají různé mechanismy zámků, které umožňují synchronizovat přístup ke sdíleným zdrojům a předcházet závodním podmínkám.

Hlavní způsoby:

  • synchronized — klíčové slovo, které lze použít na metody nebo bloky kódu. Zajišťuje exkluzivní přístup k monitoru objektu.
public synchronized void increment() {
    counter++;
}
  • java.util.concurrent.locks.Lock — rozhraní, které nabízí flexibilnější možnosti zámků než synchronized. Například lze explicitně získat a uvolnit zámek.
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

Lock lock = new ReentrantLock();

lock.lock();
try {
    // kritická sekce
} finally {
    lock.unlock();
}
  • ReadWriteLock — umožňuje oddělit zámky pro čtení a zápis, což zvyšuje výkon při velkém počtu čtecích operací.

Použití zámků pomáhá zabránit problémům s konkurenčním přístupem, jako jsou závodní podmínky a deadlocky, pokud správně řídíte pořadí získávání a uvolňování zámků v bloku finally.