如果我編寫一個public static void main
java程序,除非我把一個while (true)
循環,程序將運行,然後退出,關閉我的小程序窗口。 我的問題是,當瀏覽器運行完成呈現html內容後,它爲什麼不關閉它?網頁瀏覽器中暗含的while (true)
在哪裏?爲什麼java程序在終止時關閉但不是網頁瀏覽器
1
A
回答
3
Java應用程序的結束,因爲call stack端/空後您的main()
方法已經完成,他們必須跳回到他們被稱爲(的地方是如何方法/函數的調用在assembly language最終實現)。 main()
方法是特殊的,因爲它是您整個Java程序的入口點,其中從外部調用。
在瀏覽器,應用程序代碼的event loop內部運行不作爲主瀏覽器進程即之一的一部分通過上述main()
方法開始。事件循環,在程序過於簡化版本,看起來像:
public static void main(String args[]) {
Queue queue = ...;
while(queue.waitForEvent()){
queue.processNextEvent();
}
}
所以,在某種意義上。是的,你所說的隱含的while(true)
聲明就在那裏,在每個瀏覽器(和其他基於事件循環的系統)的深處實現。瀏覽器進程將不會關閉/終止,直到導致事件循環停止運行爲止。你關閉你的應用程序運行的標籤頁/窗口。
1
程序啓動通過main()
可以保持運行,儘管達到了主要方法的結束。如果您創建新線程,這可能會發生,偶爾會發生在GUI程序中。
AWT(以及通過擴展名擺動)具有處理事件隊列的事件循環。其他工具包或多或少地處理它。他們通常有一個方法/函數進入循環。如果應用程序需要更完整的控制,至少有一些還允許控制工具包的事件循環。然後循環可以在應用程序代碼中明確。
所以,循環的確切位置取決於瀏覽器的實現。
+0
具體而言,當沒有非守護進程線程運行時,Java程序將終止。 –
相關問題
- 1. 當網頁將要關閉時,瀏覽器做什麼?
- 2. 如果用戶不正確關閉瀏覽器(即時瀏覽器終止)
- 3. 關閉Web瀏覽器從Java程序
- 4. 強制關閉網頁瀏覽器
- 5. 什麼是比網頁瀏覽器等
- 6. Chrome瀏覽器擴展程序在Chrome瀏覽器關閉時不會持續
- 7. 當我關閉瀏覽器時,PHP腳本會終止嗎?
- 8. 如何防止在Web瀏覽器中關閉XBAP瀏覽器應用程序
- 9. 關閉網頁瀏覽器不是打開的標籤
- 10. 爲什麼在瀏覽器關閉後會話不能清除?
- 11. 爲什麼cookies在關閉瀏覽器後不會過期?
- 12. 從關閉到AJAX響應防止網頁瀏覽器返回
- 13. 如何製作自動瀏覽網頁但不在瀏覽器中的程序?
- 14. 如何在用戶關閉瀏覽器而不註銷時終止會話
- 15. session.cookie_lifetime = 0時,爲什麼會話在瀏覽器關閉時不會過期?
- 16. asp.net 4.0會話沒有終止在瀏覽器關閉
- 17. Java:爲什麼線程不會終止
- 18. 防止瀏覽器在asp.net中關閉
- 19. Java程序終止時無法關閉文件會有什麼危害嗎?
- 20. 關閉瀏覽器後,爲什麼不保存cookie?
- 21. 爲什麼我不能通過webdriver關閉瀏覽器?
- 22. 如何在瀏覽器退出時終止javafx應用程序
- 23. 網站使得網頁瀏覽器突然停止,並在一些IE瀏覽器關閉
- 24. Django CSRF Cookie - 爲什麼不在瀏覽器關閉時過期?
- 25. 爲什麼瀏覽器在回發時不會阻止屏幕?
- 26. 爲什麼不能在使用iPad時在網頁上瀏覽我的網頁?
- 27. 如何在外部網頁瀏覽器中關閉標籤頁?
- 28. 如何在用戶關閉網頁瀏覽器時關閉註銷表單應用程序
- 29. 當Safari瀏覽器關閉時,Mac會話不會自行終止
- 30. 關閉Acrobat時Acrobat.exe進程不終止
人們需要時間閱讀瀏覽器提供的內容。 – suspectus
兩者都完全不同的建模 –
沒有明確的'while(true)'(還有其他方法可以讓應用程序等待,比如'Thread#sleep()')。不過,小程序會等待「命令結束」。在通常的計劃中,「政策」是不同的,沒有等待外部實體,如果該計劃沒有其他事情要做,它就退出。 – acdcjunior