Назад к вопросам
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 и др.) — обеспечивают атомарные операции без блокировок.
Выбор способа зависит от конкретной задачи и требований к производительности и безопасности.