1、線程和進(jìn)程
(推薦教程:java入門教程)
(1) 進(jìn)程
進(jìn)程是系統(tǒng)進(jìn)行資源分配和調(diào)用的獨(dú)立單位。每一個(gè)進(jìn)程都有它自己的內(nèi)存空間和系統(tǒng)資源;
(2) 線程
線程:進(jìn)程的執(zhí)行單元,執(zhí)行路徑
單線程:一個(gè)應(yīng)用程序只有一條執(zhí)行路徑
多線程:一個(gè)應(yīng)用程序有多條執(zhí)行路徑
多進(jìn)程的意義?—— 提高CPU的使用率
2、并行和并發(fā)
并行是物理上同時(shí)發(fā)生,指在某一個(gè)時(shí)間點(diǎn)同時(shí)運(yùn)行多個(gè)程序;
并發(fā)是邏輯上同時(shí)發(fā)生,指在某一個(gè)時(shí)間段內(nèi)同時(shí)運(yùn)行多個(gè)程序。
(視頻教程推薦:java課程)
3、Java程序運(yùn)行原理和JVM的啟動(dòng)是否是多線程的?
Java程序的運(yùn)行原理:
由java命令啟動(dòng)JVM,JVM啟動(dòng)就相當(dāng)于啟動(dòng)了一個(gè)進(jìn)程。接著由該進(jìn)程創(chuàng)建了一個(gè)主線程去調(diào)用main方法。
JVM虛擬機(jī)的啟動(dòng)是單線程的還是多線程的?
垃圾回收線程也要先啟動(dòng),否則很容易會(huì)出現(xiàn)內(nèi)存溢出。
JVM啟動(dòng)至少啟動(dòng)了垃圾回收線程和主線程,所以是多線程的。