Sobes.tech
Назад к вопросам
Junior — Middle
94

Какими способами можно синхронизировать доступ нескольких потоков к одному ресурсу?

Ответ от нейросети

sobes.tech AI

Для синхронизации доступа нескольких потоков к одному ресурсу в Java используются различные механизмы:

  • Ключевое слово synchronized — блокирует участок кода или метод, чтобы только один поток мог его выполнять одновременно.
synchronized (sharedObject) {
    // критическая секция
}
  • Классы из пакета java.util.concurrent.locks, например, ReentrantLock — более гибкий механизм блокировок с возможностью попытки захвата блокировки и таймаутом.
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
    // критическая секция
} finally {
    lock.unlock();
}
  • Семафоры (Semaphore) — ограничивают количество потоков, которые могут одновременно получить доступ к ресурсу.

  • Volatile — гарантирует видимость изменений переменной между потоками, но не обеспечивает атомарность.

  • Атомарные классы (AtomicInteger, AtomicReference и др.) — обеспечивают атомарные операции без блокировок.

Выбор способа зависит от конкретной задачи и требований к производительности и безопасности.