Перейти к содержимому
Q&A

Вопросы и ответы

Короткие и практические ответы на инженерные вопросы по backend-разработке, архитектуре и эксплуатации сервисов.

Темы

Все вопросы

7 вопросов
JavaJVMMiddle

Когда JVM инициализирует класс и запускает static-блок?

Загрузка класса ещё не означает выполнение static-кода: инициализация запускается только при активном использовании.

JavaJVMSenior

Почему после redeploy приложение может удерживать старый ClassLoader?

Достаточно ссылки из живого объекта родительского загрузчика на объект или класс старого web-приложения.

JavaConcurrencyJVMMiddle

Почему volatile не делает counter++ потокобезопасным?

volatile даёт видимость, но инкремент остаётся последовательностью чтения, вычисления и записи.

JavaJVMSenior

Почему один и тот же класс может не приводиться к самому себе?

В JVM тип определяется не только полным именем класса, но и ClassLoader-ом, который его определил.

SpringCoreDISenior

Почему @Transactional не срабатывает в конструкторе или @PostConstruct?

В этот момент Spring ещё работает с исходным объектом, а AOP-proxy обычно появляется позже в lifecycle Bean-а.

JavaConcurrencyJunior

Чем Thread.start() отличается от прямого вызова run()?

start() создаёт новый путь выполнения, а run() остаётся обычным вызовом метода в текущем потоке.

JavaConcurrencyJVMMiddle

Почему поток может не увидеть изменение обычного поля?

Без happens-before у JVM и процессора нет обязанности немедленно публиковать запись другому потоку.