Процессы обычно имеют отдельные адресные пространства, а потоки одной JVM разделяют память процесса. System.exit инициирует завершение всей JVM, а не только текущего потока.
Чем процесс отличается от потока в Java? Могут ли они мешать работе друг друга? Что делает System.exit?
Процессы обычно имеют отдельные адресные пространства, а потоки одной JVM разделяют память процесса. System.exit инициирует завершение всей JVM, а не только текущего потока.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Процессы обычно имеют отдельные адресные пространства, а потоки одной JVM разделяют память процесса. System.exit инициирует завершение всей JVM, а не только текущего потока.
Потоки могут мешать друг другу через гонки, блокировки и общие ресурсы. Процессы тоже конкурируют за CPU, диск и память, а при взаимодействии — за внешние данные. У каждого потока собственный стек выполнения, но объекты в куче могут быть общими. При System.exit выполняется процедура shutdown с hooks; это не обычный выход из метода и не гарантия выполнения каждого finally во всех потоках.