Junior — Middle
Felsorolnád a több szálas programozásban használt különböző zárolási mechanizmusokat?
sobes.tech MI
Válasz az MI-től
Java több szálas programozásában különböző zárolási mechanizmusokat használnak a közös erőforrásokhoz való hozzáférés szinkronizálására:
- synchronized — beépített zárolási mechanizmus, amely alkalmazható metódusokra vagy kódrészekre. Az objektum monitorját használja.
- ReentrantLock a
java.util.concurrent.lockscsomagból — rugalmasabb zárolás, amely lehetővé teszi a megszakítást, időkorlátokat és az állapot ellenőrzését. - ReadWriteLock — lehetővé teszi a zárolások megosztását olvasás és írás között, ez növeli a teljesítményt sok olvasási művelet esetén.
- Semaphore — korlátozza a szálak számát, amelyek egyidejűleg hozzáférhetnek egy erőforráshoz.
- CountDownLatch és CyclicBarrier — a szálak koordinálására szolgálnak, bár nem klasszikus zárolások, hanem szinkronizálók.
ReentrantLock használatának példája:
import java.util.concurrent.locks.ReentrantLock;
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
// kritikus szakasz
} finally {
lock.unlock();
}