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

Какие знаешь способы решения обращения к одному полю несколькими потоками

В Java есть несколько способов обеспечения потокобезопасности при доступе к общему полю:

  1. synchronized - блокирует доступ для других потоков:
java
private int counter;
public synchronized void increment() {
    counter++;
}
  1. volatile - гарантирует видимость изменений между потоками, но не атомарность:
java
private volatile boolean flag;
  1. Atomic-классы (AtomicInteger, AtomicBoolean и др.) - обеспечивают атомарные операции:
java
private AtomicInteger counter = new AtomicInteger(0);
public void increment() {
    counter.incrementAndGet();
}
  1. Lock-интерфейсы (ReentrantLock, ReadWriteLock) - более гибкая альтернатива synchronized:
java
private final Lock lock = new ReentrantLock();
public void doSomething() {
    lock.lock();
    try {
        // критическая секция
    } finally {
        lock.unlock();
    }
}

Выбор зависит от конкретного сценария: для простых случаев достаточно volatile или Atomic, для сложных - synchronized или Lock.

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

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

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

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