更新時間:2020-01-14 15:50:26 來源:動力節點 瀏覽2591次
線程與進程的區別
在計算機發展初期,每臺計算機是串行地執行任務的,如果碰上需要IO的地方,還需要等待長時間的用戶IO,后來經過一段時間有了批處理計算機,其可以批量串行地處理用戶指令,但本質還是串行,還是不能并發執行。如何解決并發執行的問題呢?于是引入了進程的概念,每個進程獨占一份內存空間,進程是內存分配的最小單位,相互間運行互不干擾且可以相互切換,現在我們所看到的多個進程“同時"在運行,實際上是進程高速切換的效果。
那么有了線程之后,我們的計算機系統看似已經很完美了,為什么還要進入線程呢?如果一個進程有多個子任務,往往一個進程需要逐個去執行這些子任務,但往往這些子任務是不相互依賴的,可以并發執行,所以需要CPU進行更細粒度的切換。所以就引入了線程的概念,線程隸屬于某一個進程,它共享進程的內存資源,相互間切換更快速。
進程與線程的區別:
1.進程是資源分配的最小單位,線程是CPU調度的最小單位。所有與進程相關的資源,均被記錄在PCB中。
2.線程隸屬于某一個進程,共享所屬進程的資源。線程只由堆棧寄存器、程序計數器和TCB構成。
3.進程可以看作獨立的應用,線程不能看作獨立的應用。
4.進程有獨立的地址空間,相互不影響,而線程只是進程的不同執行路徑,如果線程掛了,進程也就掛了。所以多進程的程序比多線程程序健壯,但是切換消耗資源多。
Java中進程與線程的關系:
1.運行一個程序會產生一個進程,進程至少包含一個線程。
2.每個進程對應一個JVM實例,多個線程共享JVM中的堆。
3.Java采用單線程編程模型,程序會自動創建主線程 。
4.主線程可以創建子線程,原則上要后于子線程完成執行。
線程的start方法和run方法的區別
區別
Java中創建線程的方式有兩種,不管使用繼承Thread的方式還是實現Runnable接口的方式,都需要重寫run方法。調用start方法會創建一個新的線程并啟動,run方法只是啟動線程后的回調函數,如果調用run方法,那么執行run方法的線程不會是新創建的線程,而如果使用start方法,那么執行run方法的線程就是我們剛剛啟動的那個線程。
以上就是動力節點Java培訓機構小編介紹的“新手適合學習的Java多線程并發基礎”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關內容
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習