Sobes.tech
Junior — Middle
106

synchronized кілтсөзін қолданбай басқа жолдармен ағындарды синхрондаудың қандай әдістері бар?

AI-дан жауап

sobes.tech AI

Java-да synchronized кілтсөзіне қосымша бірнеше басқа жолдар бар:

  • ReentrantLock (java.util.concurrent.locks пакетінен) — synchronized-ке қарағанда икемдірек, блокировка күтуді үзу және тайм-аутпен алуға тырысу мүмкіндігі бар.

  • Semaphore — бір уақытта ресурсты пайдалана алатын жіптердің санын шектейді.

  • CountDownLatch және CyclicBarrier — бірнеше жіптің орындалуын үйлестіруге мүмкіндік береді, белгілі бір оқиғалар орын алғанша күтеді.

  • Atomic сыныптары (AtomicInteger, AtomicReference және т.б.) — айқын блоктаусыз атомарлы операцияларды қамтамасыз етеді.

  • Volatile — жіптер арасында өзгерістердің көрінуін қамтамасыз етеді, бірақ атомарлықты кепілдемейді.

ReentrantLock қолданудың мысалы:

import java.util.concurrent.locks.ReentrantLock;

ReentrantLock lock = new ReentrantLock();

lock.lock();
try {
    // сындарлы бөлім
} finally {
    lock.unlock();
}