Back to questions
СБЕР
Junior — Middle
63
Каким образом реализовать управление доступом к общим ресурсам среди нескольких потоков?
Companies where asked
Answer from AI
sobes.tech AI
Для управления доступом к общим ресурсам среди нескольких потоков в Java используются механизмы синхронизации, которые предотвращают состояние гонки и обеспечивают корректность данных.
Основные способы:
- Ключевое слово
synchronized— блокирует доступ к методу или блоку кода, позволяя только одному потоку выполнять его в данный момент.
public synchronized void increment() {
counter++;
}
- Классы из пакета
java.util.concurrent.locks, например,ReentrantLock, которые дают более гибкий контроль над блокировками.
ReentrantLock lock = new ReentrantLock();
lock.lock();
try {
// критическая секция
} finally {
lock.unlock();
}
-
Использование атомарных классов (
AtomicInteger,AtomicReference), которые обеспечивают атомарные операции без явных блокировок. -
Семафоры, барьеры и другие примитивы синхронизации для более сложных сценариев.
Выбор конкретного механизма зависит от задачи, требований к производительности и сложности синхронизации.