Sobes.tech
Junior — Middle

Quelles sont les autres méthodes pour implémenter la synchronisation des threads, en plus de l'utilisation du mot-clé synchronized?

sobes.tech IA

Réponse de l'IA

Кроме ключевого слова 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();
}