1、進程
一、進程是java特有的。java
二、進程:是一個正在執行中的程序。 進程負責了內存空間的劃分。
每個進程執行都有一個執行順序。
該順序是一個執行路徑,或者叫一個控制單元。windows
三、問題: windows號稱是多任務的操做系統,那麼windows是同時運行多個應用程序嗎?
1)從宏觀的角度: windows確實是在同時運行多個應用程序。
2)從微觀角度: cpu是作了一個快速切換執行的動做,因爲速度態度,因此我感受不到在切換而已。
安全
2、線程
一、線程在一個進程中負責了代碼的執行,就是進程中一個執行路徑。
二、線程:就是進程中的一個獨立的控制單元。多線程
三、線程在控制着進程的執行。jvm
一個進程中至少有一個線程。操作系統
補充一個報錯信息:java.lang.NoClassDefFoundError ->java中tools下的jar文件找不到了線程
3、多線程:
一、多線程: 在一個進程中有多個線程同時在執行不一樣的任務。進程
二、疑問 :線程負責了代碼的執行,咱們以前沒有學過線程,爲何代碼能夠執行呢?
答:
1)運行任何一個java程序,jvm在運行的時候都會建立一個main線程執行main方法中全部代碼。
2)Java VM 啓動的時候會有一個進程java.exe。該進程中至少一個線程負責java程序的執行。並且這個線程運行的代碼存在於main方法中,該線程稱之爲主線程。內存
三、一個java應用程序至少有幾個線程?
答:至少有兩個線程, 一個是主線程負責main方法代碼的執行,一個是垃圾回收器線程,負責了回收垃圾。資源
擴展:其實更細節說明jvm,jvm啓動不止一個線程,還有負責垃圾回收機制的線程。
四、多線程有什麼好處呢?
1)解決了一個進程能同時執行多個任務的問題。
2)提升了資源的利用率。例如:在下載時效率會有所提升。
五、多線程的弊端: 1)增長cpu的負擔。 2)下降了一個進程中線程的執行機率。 3)引起了線程安全 問題。 4)出現了死鎖現象。