17.1.Java語言線程併發和並行、線程與進程,如何創建一個線程類

線程

並行與併發

並行:指兩個或多個事件在同一時刻發生(同時發生)。

併發:指兩個或多個事件在同一個時間段內發生。

 

併發指的是在一段時間內宏觀上有多個程序同時運行,這在單 CPU 系統中,每

一時刻只能有一道程序執行,即微觀上這些程序是分時的交替運行,只不過是給人的感覺是同時運行,那是因爲分時交替

運行的時間是非常短的。

進程與線程

進程:是指一個內存中運行的應用程序,每個進程都有一個獨立的內存空間。(一個應用程序可以同時運行多個進程);

進程也是程序的一次執行過程,是系統運行程序的基本單位;系統運行一個程序即是一個進程從創建、運行到消亡的過

程。

線程:進程內部的一個獨立執行單元;一個進程可以同時併發的運行多個線程,可以理解爲一個進程便相當於一個單

CPU 操作系統,而線程便是這個系統中運行的多個任務。

Java 程序的進程裏面至少包含兩個線程,主進程也就是 main()方法線程,另外一個是垃圾回收機制線程。

進程與線程的區別

進程:有獨立的內存空間,進程中的數據存放空間(堆空間和棧空間)是獨立的,至少有一個線程。

線程:堆空間是共享的,棧空間是獨立的,線程消耗的資源比進程小的多。

注意:

1. 因爲一個進程中的多個線程是併發運行的,那麼從微觀角度看也是有先後順序的,哪個線程執行完全取決於CPU 的調

度,程序員是干涉不了的。而這也就造成的多線程的隨機性。

2. Java 程序的進程裏面至少包含兩個線程,主進程也就是 main()方法線程,另外一個是垃圾回收機制線程。每當使用

java 命令執行一個類時,實際上都會啓動一個 JVM,每一個 JVM 實際上就是在操作系統中啓動了一個線程,java 本身具

備了垃圾的收集機制,所以在 Java 運行時至少會啓動兩個線程。

3. 由於創建一個線程的開銷比創建一個進程的開銷小的多,那麼我們在開發多任務運行的時候,通常考慮創建多線程,

而不是創建多進程。

創建線程類

Java使用 java.lang.Thread 類代表線程,所有的線程對象都必須是Thread類或其子類的實例。

通過繼承Thread類來創建和啓動線程

首先定義繼承Thread類的子類,並重寫run方法, 該run()方法的方法體就代表了線程需要完成的任務,因此把run()方法稱爲

線程執行體。

然後創建線程類的對象並調用start()方法啓動線程

示例:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章