Какие есть другие способы реализации синхронизации потоков, кроме использования ключевого слова synchronized?
Answer from 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();
}