@ aix ответ, вероятно, по поводу вашего вопроса.Каждый раз, когда вы запускаете команду java
(или эквивалентную), вы получаете другой экземпляр JVM.Вызов System.exit()
в одном экземпляре JVM не приведет к завершению работы других экземпляров JVM.(Попробуйте и посмотрите!)
Можно создать структуру, в которой вы запускаете несколько программ в рамках одной JVM.Это действительно то, что вы делаете, когда запускаете «оболочку бобов».То же самое происходит, когда ваши "программы" - это службы (или веб-приложения, или как вы их называете), работающие в какой-то среде сервера приложений.
Плохая новость заключается в том, что если вы делаете такие вещи,Не совсем надежный способ заставить индивидуальную «программу» уйти.В частности, если программа не предназначена для совместной работы (например, если она не проверяет наличие прерываний), вам придется прибегнуть к УСТАРЕВШЕМУ методу Thread.stop()
и друзьям.И эти методы могут иметь неприятные последствия для JVM и других программ, работающих в нем.
Теоретически, решение этой проблемы заключается в использовании изоляторов.К сожалению, я не думаю, что какие-либо основные JVM поддерживают Isolates.