1. 程式人生 > >多執行緒 之 執行緒簡介

多執行緒 之 執行緒簡介

什麼是程序?
所有執行中的程式通常對應一個程序。當一個程式進入記憶體執行時,就會變成一個程序。

程序是出於執行過程中的程式,並且具有一定的獨立功能。
程序是系統進行資源分配和排程的獨立單位。

程序包含散打特徵:
1.獨立性。程序是系統中獨立存在的實體,擁有自己獨立的資源,每一個程序都擁有自的私有的地址空間,在沒有經過程序本身允許的情況下,一個使用者程序不可以直接訪問其他程序的地址空間。
2.動態性。程序與程式之間的區別在於,程式只是一個靜態的指令集合,而程序是一個正在系統中活動的指令集和。在程序中加入了時間的概念。程序具有自己的生命週期和各種不同的狀態,這些概念是程式所不具備的。
3.併發性。多個程序可以在單個處理器上併發性執行,多個程序之間不會有影響。

併發性和並行性?
併發性:指的是 在同一時刻只能有一條指令執行。但是多個程序指令被快速切換使得在巨集觀上具有多個程序同時執行的效果。
並行性:在同一時刻有多條指令在多個處理器上同時執行。
例如:程式設計師在一邊開發工具寫程式,依次按開著參考手冊,一邊播放音樂。。。這就是併發性的具體體現,cpu在某個時間內只能執行一個程序,只是在用人感覺不到的速度快速切換,

多執行緒是什麼?
多執行緒拓展了多程序的概念。使得同一個程序可以同時併發性處理多個任務。

執行緒是什麼?
執行緒可以看做是輕量級程序。執行緒是程序的執行單元,就像程序在系統中的地位一樣,在程序中是獨立、併發的執行流。當程式被初始化,主執行緒就會被建立,絕大多數的應用程式(程序)來說,通常僅要求有一個主執行緒,但可以在建立多條順序執行流,這些順序執行流就是執行緒。

程序和執行緒的關係?
一個程序可以有多個執行緒,一個執行緒必須有一個父執行緒,它與父執行緒的其他執行緒共享該程序的全部資源。需要特別注意:需要確保執行緒不會妨礙同意程序中的其他執行緒。

多執行緒的優勢:
1.程序之間不能共享記憶體,但是執行緒之間共享記憶體就很簡單,
2.系統建立程序時需要為該程序重新分配系統資源,但是建立執行緒付出的代價會很小,因策使用多執行緒來實現多工併發性多程序的小路高
3.java語言內建了多執行緒功能,而不是單純地作為底層作業系統的排程方式,從而簡化了java的多執行緒程式設計。
總結下來就是:一個程式要執行就必須有一個程序,一個程序中包含至少一個執行緒。