天天看點

Java并發程式設計(一)-線程入門(了解并發與并行、線程與程序)1、并發與并行2、線程與程序

1、并發與并行

Java并發程式設計(一)-線程入門(了解并發與并行、線程與程式)1、并發與并行2、線程與程式
  • 并發:指兩個或多個事件在同一個時間段内發生
  • 并行:指兩個或多個事件在同一時刻發生(同時發生)

在作業系統中,安裝了多個程式,并發指的是在一段時間内宏觀上有多個程式同時運作,這在單 CPU 系統中,每 一時刻隻能有一道程式執行,即微觀上這些程式是分時的交替運作,隻不過是給人的感覺是同時運作,那是因為分時交替運作的時間是非常短的。

而在多個 CPU 系統中,則這些可以并發執行的程式便可以配置設定到多個處理器上(CPU),實作多任務并行執行, 即利用每個處理器來處理一個可以并發執行的程式,這樣多個程式便可以同時執行。目前電腦市場上說的多核 CPU,便是多核處理器,核越多,并行處理的程式越多,能大大的提高電腦運作的效率。

(注意:單核處理器的計算機肯定是不能并行的處理多個任務的,隻能是多個任務在單個CPU上并發運作。同理,線程也是一樣的,從宏觀角度上了解線程是并行運作的,但是從微觀角度上分析卻是串行運作的,即一個 線程一個線程的去運作,當系統隻有一個CPU時,線程會以某種順序執行多個線程,我們把這種情況稱之為 線程排程。)

2、線程與程序

  • 程序:是指一個記憶體中運作的應用程式,每個程序都有一個獨立的記憶體空間,一個應用程式可以同時運作多 個程序;程序也是程式的一次執行過程,是系統運作程式的基本機關;系統運作一個程式即是一個程序從創 建、運作到消亡的過程。
  • 線程:線程是程序中的一個執行單元,負責目前程序中程式的執行,一個程序中至少有一個線程,一個程序 中是可以有多個線程的,這個應用程式也可以稱之為多線程程式。

(簡而言之:一個程式運作後至少有一個程序,一個程序中可以包含多個線程 )

我們可以再電腦底部工作列,右鍵----->打開任務管理器,可以檢視目前任務的程序:

程序:

Java并發程式設計(一)-線程入門(了解并發與并行、線程與程式)1、并發與并行2、線程與程式

線程:

Java并發程式設計(一)-線程入門(了解并發與并行、線程與程式)1、并發與并行2、線程與程式

線程排程:

  • 分時排程 :所有線程輪流使用 CPU 的使用權,平均配置設定每個線程占用 CPU 的時間。
  • 搶占式排程 :優先讓優先級高的線程使用 CPU,如果線程的優先級相同,那麼會随機選擇一個(線程随機性),Java使用的為 搶占式排程。 設定線程的優先級

(大部分作業系統都支援多程序并發運作,現在的作業系統幾乎都支援同時運作多個程式。比如:現在我 們上課一邊使用編輯器,一邊使用錄屏軟體,同時還開着畫圖闆,dos視窗等軟體。此時,這些程式是 在同時運作,”感覺這些軟體好像在同一時刻運作着“。 實際上,CPU(中央處理器)使用搶占式排程模式在多個線程間進行着高速的切換。對于CPU的一個核而 言,某個時刻,隻能執行一個線程,而 CPU的在多個線程間切換速度相對我們的感覺要快,看上去就是 在同一時刻運作。 其實,多線程程式并不能提高程式的運作速度,但能夠提高程式運作效率,讓CPU的 使用率更高。)

設定線程優先級:

Java并發程式設計(一)-線程入門(了解并發與并行、線程與程式)1、并發與并行2、線程與程式
Java并發程式設計(一)-線程入門(了解并發與并行、線程與程式)1、并發與并行2、線程與程式

繼續閱讀