Java多線程 -- 概述

Java多線程 - 概述

一、線程概述

幾乎所有的操作系統都會支持進程的概念。所有運行中的任務通常都會對應着一個進程(Process)。而一個程序進入內存中運行的時候,就會變成一個線程。
可能很多人會在這裏迷糊,進程和線程有些分不清楚。

簡單,進程和線程區別:

  • 進程:運行中的程序,資源分配的單元,切換代價大,擁有資源多。
  • 線程:進程內部的一個執行序列,執行行單元,切換代價小,擁有資源少,多個線程共享進程的資源。

一般來說:進程會有三個特徵:

  • 獨立性:進程是系統中獨立存在的實體,可以擁有自己的獨立資源,每一個進程都擁有着自己私有的地址空間,在沒有經過進程本身允許的額情況下,一個用戶的進程不可以直接訪問其他的進程的地址空間。
  • 動態性:進程與程序之間的區別在於:程序知識一個靜態的指令集和,但是進程一個正在系統中活動的指令集和,在進程中加入了時間的概念,進程擁有自己的生命週期和各種不同的狀態,這些概念在程序之中不具備的。
  • 併發性:多個進程可以在單個處理器上併發執行,多個進程之間不會相互影響。

注意:併發性與並行性是兩個不同概念,並行指在同一時刻,有多條指令在多個服務器上同時執行,併發是指同一時刻只能有一條指令執行,但多個進程指令被快速輪換執行,使得宏觀上能夠具有多個進程同時執行的效果。

線程是進程的組成部分,一個進程能夠擁有多個線程,一個線程必須有一個父進程。線程可以擁有自己的堆棧資源,自己的程序計數器和自己的局部變量,但不擁有系統資源,與父進程的其他線程共享着系統資源。因爲多個線程共享父進程的全部資源,因此編程上更加方便,但是必須更加小心,因此需要確保線程之間不會互相影響。

二、多線程的優勢

  • 因爲線程的劃分尺度小於進程,所以說是的多線程程序的併發性高
  • 多個線程共享內容,從而極大的提高了程序的運行效率
  • 線程比進程擁有的效率更高,因爲多個線程共享同一個進程的虛擬空間。利用這些共享的數據,線程更容易實現相互之間的通信。

總結:

  • 進程間不能共享內存,線程間共享內存十分簡單
  • 系統創建進程時需要爲該進程重新分配系統資源,但創建線程的代價小,因此使用多線程實現多任務併發比多進程的效率高
  • Java語言內置多線程功能支持,而不是單純地作爲底層操作系統的調度方式,從而簡化了Java多線程編程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章