Java多線程-------進程、線程基本概念

什麼是進程?

顧名思義:正在進行(運行)的程序,是程序進行資源分配的基本單位

 

目前操作系統都是支持多進程,可以同時執行多個進程,通過ID對進程進行區分,PID:process ID

 

單核CPU在同一時刻,只能運行一個進程;宏觀上看是並行、微觀看是串行

 

什麼是線程?

 

線程,又稱輕量級進程。進程中的一條執行路徑,也是CPU的基本調度單位。一個進程由一個或多個線程組成,彼此間完成不同的工作,同時執行,稱爲多線程

可以查看本機的線程

 

舉個例子: 迅雷是一個進程,當中的多個下載任務即是多個線程

Java虛擬機是一個進程,當中默認包含主線程(main),可通過代碼創建多個獨立的線程,與main併發執行

 

進程 和 線程的區別

1、進程是操作系統資源分配的基本單位,而線程是CPU的基本調度單位

2、一個程序運行後至少有一個進程

3、一個進程可以包含多個線程大,但是至少需要有一個線程,否則這個進程是沒有意義的

4、進程間不能共享數據段地址,但同進程的線程之間可以

 

 

線程的組成部分

CPU時間片:操作系統會爲每個線程分配執行時間

運行數據:(區分哪個是共享的,哪個是獨立的)

  • 堆空間:存儲線程需要使用的對象,多個線程可以共享堆中的對象
  • 棧空間:存儲線程需要使用的局部變量,每個線程都擁有獨立的棧

 

 

線程的特點:

 

1、線程搶佔式執行

  • 效率高
  • 可防止單一線程長時間獨佔CPU

由於每個線程都分配了時間片,所以不存在線程會一直在CPU執行