java多線程調度三分鐘速讀

什麼是進程:進程就是計算機的運行檢索,執行中的程序


一個進程至少包含一個線程

什麼是線程:線程就是進程的運行檢索,計算機運行的最小單位線程本身依靠程序進行運行線程是程序中的順序控制流,只能使用分配給程序的資源和環境

並行與併發

並行:多個cpu實例或者多臺機器同時執行一段處理邏輯,是真正的同時。

併發:通過cpu調度算法,讓用戶看上去同時執行,實際上從cpu操作層面不是真正的同時

線程的狀態圖

java多線程調度三分鐘速讀

線程的幾種狀態

創建、就緒、運行、阻塞、死亡

Java中是如何創建一個線程的呢?

創建線程的第一種方式:

1. 創建一個類繼承Thread

2. 重寫Thread中的run方法 (創建線程是為了執行任務 任務代碼必須有存儲位置,run方法就是任務代碼的存儲位置。)

3. 創建子類對象,其實就是在創建線程

4. 啟動線程start()

這種方式的特點(缺陷):線程任務和線程是綁定在一起的。

舉例:火車站售票窗口,四個窗口同時賣票,因為是同時,所以使用多線程。

創建四個線程,都是賣票。因為都是賣票,所以四個線程的任務是一樣的。

只需要定義一個類繼承Thread

java多線程調度三分鐘速讀

為了解決四個線程共享票的問題,需要使用創建線程的第二種方式:

1. 創建實現了Runnable接口的子類

2. 重寫Runnable接口中的run方法

3. 創建實現了Runnable接口的子類的對象

4. 創建Thread類的對象,也就是在創建線程

5. 把實現了Runnable接口的子類對象作為參數傳遞給Thread類的構造方法

這種方式的特點是:把線程任務進行了描述,也就是面向對象,從而實現了線程任務和線程對象的分離。線程執行什麼任務不再重要,只要是實現了Runnable接口的子類對象都可以作為參數傳遞給Thread的構造方法,此方式較為靈活。

第二種方式還有一個好處是實現接口了,還不影響繼承其他父類。

java多線程調度三分鐘速讀

比較:

第一種創建線程的方式:線程和線程任務是綁定在一起的,創建了4個線程就創建了4份資源。

第二種創建線程的方式:線程和線程任務進行了分離,只需要創建一個任務,讓4個線程分別去執行。


分享到:


相關文章: