長沙網(wǎng)站建設(shè)開發(fā)seo百度網(wǎng)站排名軟件
點個關(guān)注,必回關(guān)
文章目錄
- 一、Java程序是如何執(zhí)行的
- 二、合理利用線程池能夠帶來三個好處
一、Java程序是如何執(zhí)行的
我們?nèi)粘5墓ぷ髦卸际褂瞄_發(fā)工具(IntelliJ IDEA 或 Eclipse 等)可以很方便的調(diào)試程序,或者是通
過打包工具把項目打包成 jar 包或者 war 包,放入 Tomcat 等 Web 容器中就可以正常運行了,但你
有沒有想過 Java 程序內(nèi)部是如何執(zhí)行的?其實不論是在開發(fā)工具中運行還是在 Tomcat 中運行,
Java 程序的執(zhí)行流程基本都是相同的,它的執(zhí)行流程如下:
- 先把Java代碼編譯成字節(jié)碼,也就是把 .Java類型的文件編譯成 .class類型的文件。這個過程的大致執(zhí)行流程:
Java 源代碼 -> 詞法分析器 -> 語法分析器 -> 語義分析器 -> 字符碼生成器 ->最終生成字節(jié)碼
,其中任何一個節(jié)點執(zhí)行失敗就會造成編譯失敗; - 把class文件放置到Java虛擬機,這個虛擬機通常指的是Oracle官方自帶的HotspotJVM;
- Java虛擬機使用類加載器(Class Loader)裝載class文件
- 類加載完成之后,會進行字節(jié)碼校驗,字節(jié)碼校驗通過之后JVM解釋器會把字節(jié)碼翻譯成機器碼交由操作系統(tǒng)執(zhí)行。但不是所有代碼都是解釋執(zhí)行的,JVM對此做了優(yōu)化,比如,以Hotspot虛擬機來說,它本身提供了JIT(Just In Time)也就是我們通常所說的動態(tài)編譯器,
它能夠在運行時將熱點代碼編譯為機器碼,這個時候字節(jié)碼就變成了編譯執(zhí)行。Java 程序執(zhí)行
流程圖如下:
二、合理利用線程池能夠帶來三個好處
(線程池如何用、線程池的好處、線程池的啟動策略)
第一:降低資源消耗。通過重復利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗。
阿里內(nèi)部資料
第二:提高響應速度。當任務到達時,任務可以不需要等到線程創(chuàng)建就能立即執(zhí)行。
第三:提高線程的可管理性。線程是稀缺資源,如果無限制的創(chuàng)建,不僅會消耗系統(tǒng)資源,還會降
低系統(tǒng)的穩(wěn)定性,使用線程池可以進行統(tǒng)一的分配,調(diào)優(yōu)和監(jiān)控。