Встречается на собеседованиях • сегодня
Помнишь ли как работать с synchronized
synchronized в Java используется для синхронизации доступа к общим ресурсам в многопоточной среде. Он может применяться к методам или блокам кода.
Синхронизированный метод:
java
public synchronized void increment() {
counter++;
}Весь метод блокируется на объекте, которому принадлежит метод (для статических методов — на классе).
Синхронизированный блок:
java
public void increment() {
synchronized(this) {
counter++;
}
}Блокируется только указанный блок кода на указанном объекте (в примере — this).
Особенности:
- Гарантирует видимость изменений между потоками (happens-before)
- Может вызывать contention (конкуренцию) при высокой нагрузке
- Альтернативы в современных Java —
ReentrantLock,StampedLock, атомарные классы
Пример deadlock:
java
// Поток 1
synchronized(a) {
synchronized(b) { ... }
}
// Поток 2
synchronized(b) {
synchronized(a) { ... }
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы