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();
}