JAVA重點類 多執行緒

澄清石灰水t發表於2020-10-20

一、多執行緒基本概念

1、程式(program)是為完成特定任務、用某種語言編寫的一組指令的集合。即指一段靜態的程式碼,靜態物件。

說明:軟體安裝好了,但是還沒跑起來,此時就是靜態程式碼。比如qq,遊戲,還沒執行的時候。

2、程式(process)是程式的一次執行過程,或是正在執行的一個程式。是一個動態的過程:有它自身的產生、存在和消亡的過程。-生命週期,如:執行中的QQ,執行中的MP3播放器

  • 程式是靜態的,程式是動態的
  • 程式作為資源分配的單位,系統在執行時會為每個程式分配不同的記憶體區域(堆和方法區)

說明:程式一旦執行起來,載入到記憶體中以後,就成了程式

3、執行緒(thread):程式可進一步細化為執行緒,是一個程式內部的一條執行路徑。

  • 若一個程式同一時間並行執行多個執行緒,就是支援多執行緒的。比如360安全衛士,同時進行木馬查殺,電腦清理,和系統修復都是多執行緒的體現
  • 執行緒作為排程和執行的單位,每個執行緒擁有獨立的執行棧和程式計數器(pc),執行緒切換的開銷小
  • 一個程式中的多個執行緒共享相同的記憶體單元記憶體地址空間 它們從同一堆中分配物件,可以訪問相同的變數和物件。這就使得執行緒間通訊更簡便、高效。但多個執行緒操作共享的系統資原可能就會帶來安全的隱患

說明:main方法就是一個執行緒。

4、JVM記憶體解析

      虛擬機器棧和程式計數器,每個執行緒各有一套。方法區和堆每個程式各一份(多個執行緒共享堆和方法區)。本地方法棧是c++寫的底層,不用管

 

相關文章