從生活中理解什麼是多執行緒

2021-07-24 19:00:44 字數 979 閱讀 5829

每乙個程式可以包含至少乙個執行緒,而多個執行緒之間可以「併發」執行。

在介紹執行緒前先來用生活中最常見的乙個小例子來理解什麼是執行緒:

假如你去一家餐館吃飯,那家餐館只有乙個服務員,所以這個唯一的服務員給你點菜的時候,別的去餐館吃飯的人就得等著。但是如果這個餐館有多個服務員的話,那麼在同一時刻就可以給多個去餐館吃飯的人點菜,這裡舉a、b兩個服務員,分別接待甲、乙兩個顧客,而每個顧客點了不同的三道菜。

上面例子中的餐館可以理解成乙個程式,而a、b兩個服務員可以理解成兩個執行緒,後廚做菜的廚師可以看做是cpu(假設只有乙個cpu)。

從a、b兩個服務員同時接待甲、乙兩個顧客這個表象來看執行緒是「同步」、「併發」執行的,但是在廚師做菜的過程中還是有先後之分的,只是廚師會把甲乙兩個顧客點的菜分開來做,做完甲的一道菜後立刻開始做乙的一道菜,這樣不停地切換著做甲乙兩個顧客點的菜。而在甲乙顧客看來他們桌上都有著菜吃,誤以為他們的菜是同時做出來的。

而計算機裡的多執行緒也是如此,cpu會分配給每乙個執行緒只有極少的執行時間,時間一到就交出執行權,所有執行緒被快速的切換執行,因為cpu的執行速度非常的快,所以在執行的過程中我們可以簡單的認為這些執行緒是「併發」執行的。

上面廚師做菜的原則是:不同的切換顧客們點的菜。假設廚師做菜的原則變了,是單顧客原則:給一位顧客做完所有的菜後再給別的顧客做菜,就是說先一下子把甲點的三道菜全做出來後再去做乙點的那三道菜,這樣的話如果廚師在做甲的某一道菜時發現甲點的那道菜的原料沒有了,那麼乙的菜就得一直等著。

如果是在計算機中,單顧客原則執行執行緒的話,當乙個惡性的執行緒執行不下去時,計算機就會出現宕機的現象,這時候只能重啟。

上面介紹的廚師做菜的兩種原則分別代表著計算機中線程的兩種排程形式:搶占式排程和非搶占式排程。

應用中我們一般用搶占式排程(即廚師的第一種做菜原則)。

同步請求是指:傳送方發出資料後,等接收方發回響應以後才發下乙個資料報的通訊方式。 

非同步請求是指:傳送方發出資料後,不等接收方發回響應,繼續接著傳送下乙個資料報的通訊方式。

多執行緒(1) 從生活中理解什麼是多執行緒

每乙個程式可以包含至少乙個執行緒,而多個執行緒之間可以 併發 執行。在介紹執行緒前先來用生活中最常見的乙個小例子來理解什麼是執行緒 假如你去一家餐館吃飯,那家餐館只有乙個服務員,所以這個唯一的服務員給你點菜的時候,別的去餐館吃飯的人就得等著。但是如果這個餐館有多個服務員的話,那麼在同一時刻就可以給多...

多執行緒學習 一 什麼是執行緒

process與thread 程式 指令和資料的有序集合,其本身沒有任何執行的含義,是乙個靜態的概念。程序 process 執行程式的一次執行過程,乙個動態的概念。是系統資源分配的單位 執行緒 是cpu排程和執行的單位 乙個執行緒可以包含若干個執行緒,至少有乙個執行緒 注意 很多多執行緒是模擬出來的...

多執行緒《四》從Synchronized理解重入鎖

當乙個執行緒得到乙個物件鎖後,再次請求此物件鎖時是可以再次得到該物件的鎖。這也證明在乙個synchronized方法 塊的內部呼叫本類的其他synchronized方法 塊時候,是永遠可以得到鎖的。1 public class syncreuseservice 67 synchronized pub...