Встречается на собеседованиях • сегодня

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

Для безопасной работы нескольких потоков с общим ресурсом в Java используйте механизмы синхронизации:

  1. synchronized - блокирует доступ к ресурсу для других потоков:
java
public synchronized void increment() {
    counter++;
}
  1. Lock интерфейс (ReentrantLock) - более гибкая альтернатива synchronized:
java
Lock lock = new ReentrantLock();
public void increment() {
    lock.lock();
    try {
        counter++;
    } finally {
        lock.unlock();
    }
}
  1. Atomic классы (AtomicInteger, AtomicLong и др.) - для атомарных операций:
java
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet();
  1. ThreadLocal - если нужны отдельные копии ресурса для каждого потока.

  2. Иммутабельные объекты - создание неизменяемых объектов, которые безопасно разделять между потоками.

Выбор зависит от конкретного сценария. Atomic классы эффективны для простых операций, synchronized проще в использовании, а Lock предоставляет больше контроля.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы