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

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы