public class Example{
public static void main(String[] args){
System.out.println("Hi!");
// What's happening here?
}
}
Посмотрите на комментарий, в котором говорится, что здесь происходит? Что там происходит? JVM находится на выходе, когда ваша программа вот-вот завершится. Виртуальная машина Java длится до тех пор, пока ваша программа работает, она начинается, когда ваша программа запускается и заканчивается, когда заканчивается ваша программа.
Теперь, если мы рассмотрим:
public class Example{
public static void main(String[] args){
System.out.println("Hi!");
Thread t = new Thread(new Runnable(){
public void run(){
try{
Thread.sleep(Long.MAX_VALUE);
}catch(InterruptedException ex){}
}
});
t.start();
// What's happening here?
}
}
Что произойдет в точке, где комментарий существует. Ответ - ничто. Поскольку другой поток все еще жив и не-daemon, программа продолжает работать (и, следовательно, JVM не выходит). Единственный путь, чтобы завершить его, - это либо завершение сна, либо ручное завершение процесса, запускающего приложение.
В наиболее упрощенных терминах (и не совсем точно, если вы педантичны) срок службы JVM для приложения Java может быть приравнен к сроку службы самого приложения. В большинстве ситуаций вы можете заменить термин JVM на «мое приложение» без особых проблем.
Надеюсь, что очистит его.
JVm как и любой другой процесс, ему необходимо выйти –
Знаете ли вы, что такое процесс? –
Когда ваша программа закончена, вы хотите, чтобы JVM завершил работу. – YMomb