四、Java高級特性(多線程基礎概念篇)

一、進程和線程的概念

1、進程

進程是操作系統進行資源分配的最小單元,資源例如:cpu,內存,磁盤IO。進程之間是獨立的。例如我們在windows上安裝的一個PPT程序叫應用程序,當我們啓動我們的PPT程序,操作系統中就會存在一個PPT的應用程序進程。

2、線程

線程是CPU調度的最小單位,必須依賴於進程存在,不能獨立存在。一個進程可以擁有多個線程,線程可以共享進程的資源,包括內存、磁盤IO。

二、CPU核心數和線程數的關係

通過下圖看到我們計算機的一個配置信息:內核是4個,邏輯處理器是8個,也就意味着CPU核心數是4個,並且我們的計算機同時可以跑8個線程。

三、CPU時間片輪轉機制

以上我們提到了計算機可以同時跑8個線程,但是在實際在開發中我們好像可以啓動很多個線程,沒有什麼影響。其實是CPU採用了一種時間片輪轉機制。CPU執行一條指令時間是非常短的:0.6ns。因此在我們啓動多個線程執行的時候,CPU會把時間切成很多片給我們不同的線程執行。我們人爲完全沒感覺到。大概理解就是:在1S中,CPU可能調度執行了很多個線程,而我們人爲感覺不到,因此認爲線程是同時執行的。

四、並行和併發的概念

1、並行

並行就是指可以同時運行的任務數。可以理解爲操作系統同時可以運行的線程數。例如以上我們計算機的配置,核心線程數是8,意思就是並行數是8。


2、併發

併發指的是:某個時間內可以執行的任務數。時間片輪轉其實就是一種併發機制。例如我們的並行數雖然是8個,但是由於CPU時間片的輪轉,我們1S內執行了100個線程,那我們就可以理解成我們的1S內的併發是100。

3、併發編程的好處

採用多線程編程的好處:充分利用CPU的資源,加快響應用戶的時間。代碼模塊化,異步化。
需要注意:線程共享進程的資源,併發編程就導致線程搶佔資源。使用鎖,也可能會導致死鎖等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章