Sobes.tech
Junior — Middle
107

synchronized საკვანძო სიტყვას გამოყენების გარდა, რა სხვა გზები არსებობს ნაკადების სინქრონიზაციის განხორციელებისთვის?

პასუხი AI-სგან

sobes.tech AI

Кроме ключевого слова synchronized в Java есть несколько других способов синхронизации потоков:

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