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

Материалы

Java

Как JVM загружает и инициализирует классы

Разбираемся, что происходит с классом до main(): Loading, Verification, Preparation, Resolution и Initialization, когда запускается <clinit> и какие обращения действительно инициализируют класс.

Темы

Другие материалы

4 материала
СтатьяJava

ClassLoader-ы в JVM: Bootstrap, Platform, Application и parent delegation

Разбираемся, как JVM находит классы, чем отличаются Bootstrap, Platform и Application ClassLoader, как работает parent delegation и почему один и тот же класс, загруженный разными ClassLoader-ами, становится разными типами.

Middle13 мин
СтатьяJava

Java Memory Model: visibility, ordering и happens-before

Разбираемся, зачем Java Memory Model нужна в многопоточном коде, откуда берутся проблемы видимости и data race и какие гарантии дают volatile, synchronized, start() и join().

Middle12 мин
СтатьяJava

Процессы, потоки и память JVM

Разбираемся, как heap, stack, CPU cache и Java Memory Model влияют на видимость изменений между потоками, data race и порядок выполнения Java-кода.

Junior13 мин
СтатьяJava

Потоки в Java: Thread, start(), interrupt(), sleep() и join()

Разбираемся, как создать и запустить поток в Java, чем start() отличается от run(), как работают interrupt(), sleep() и join() и почему порядок выполнения потоков не гарантирован.

Junior8 мин