如果我写一个 public static void main
java 程序,除非我放一个 while (true)
循环,程序将运行然后退出,关闭我的小程序窗口.
我的问题是,当网络浏览器运行渲染 html 内容时,在完成渲染后,为什么它不自行关闭? Web 浏览器中隐含的 while (true)
在哪里?
最佳答案
Java 应用程序结束,因为 call stack 在您的 main()
方法完成后结束/为空 并且它们必须跳回到它们被调用的地方 (这就是方法/函数调用最终在 assembly language 中实现的方式。 main()
方法很特殊,因为它是整个 Java 程序的入口点,即从外部调用的程序。 p>
在浏览器中,您的应用程序代码在 event loop 中运行,不是主浏览器进程的一部分,即通过上述 main()
方法启动的进程。事件循环,在一个过于简化的程序版本中,看起来像这样:
public static void main(String args[]) {
Queue queue = ...;
while(queue.waitForEvent()){
queue.processNextEvent();
}
}
所以,从某种意义上说。是的,您正在谈论的隐式 while(true)
语句存在于每个浏览器(和其他基于事件循环的系统)实现的深处。浏览器进程不会关闭/终止,直到某些事情导致事件循环停止运行,例如您关闭了您的应用正在运行的选项卡/窗口。
关于java - 为什么 java 程序在终止时关闭而不是 web 浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304225/