它是流程的執行單元,是流程中內科的調度實體。獨立運行的基本單元,比進程小。線程也稱為輕量級進程。
壹個程序至少有壹個進程,壹個進程至少有壹個線程。
Qq和微信都是進程,qq裏的聊天、qq空間、關註都是線程。
每個進程都有自己的地址空間,也就是進程空間。在網絡或多用戶切換下,壹臺服務器通常需要接收來自數量不確定的用戶的大量並發請求。為每個請求創建壹個進程顯然是不可行的(系統開銷大,響應用戶請求的效率低),於是在操作系統中引入了線程的概念。
1.線程的執行過程是線性的。雖然中間會有中斷或者停頓,但是進程所擁有的資源只是為線性執行進程服務的。壹旦線程被切換,這些資源需要被保護。
2.進程分為單線程進程和多線程進程。單線程進程從宏觀上看也是線性執行進程,從微觀上看只有壹個執行進程。多線程進程在宏觀上是線性的,在微觀上執行多重操作。
線程的變化只代表CPU的執行進程的變化,沒有進程所擁有的資源的變化。
過程切換,消耗資源,效率高。所以當需要頻繁切換時,使用線程比使用進程更好。同樣,如果需要同時操作某些變量,只能使用線程而不是進程。
線程執行開銷小,但不利於資源的管理和保護。線程適合在SMP機器上運行(雙CPU系統)。
流程執行成本很大,但是可以很好的管理和保護資源。流程可以跨機器向前移動。