Sobes.tech
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), которые обеспечивают атомарные операции без явных блокировок.

  • Семафоры, барьеры и другие примитивы синхронизации для более сложных сценариев.

Выбор конкретного механизма зависит от задачи, требований к производительности и сложности синхронизации.