這幾天項目不急,覺得自己基礎不是很牢固,是以花了點時間做一做多線程方面的總結。
- 線程的生命周期
2. 對于上面的生命周期進行一波解釋

1) 建立狀态 我的了解就是線程的建立
2)就緒狀态 我的了解就是線程準備完畢,就是告訴計算機為我準備好了,可以讓我開始執行了,但是不一定馬上就 會執行你
3) 執行狀态 正式的開始執行相關的代碼,也就是你需要做的事情,這個最複雜,可能會發生三種情況
第一可能會被阻塞,如sleep操作,wait操作,yield操作等
第二可能會進入就緒狀态,比如yield操作後發現自己是最高優先,那麼就會重新開始執行本線程
第三 可能再次進入到就緒狀态,可能阻塞時間非常短暫,那麼可能會進入到就緒狀态。
第四 正常操作進入到死亡狀态。
4) 死亡狀态:線程被終止。
3. 對于多線程需要了解的幾個常識性問題
1)并發與并行
并發:也就是邏輯意義上面的并發,讓使用者看起來是2個或者多個線程同時在做,實際上是以時間片輪轉的方式進行的,隻是說速度非常的快,給人的感覺就像是有多個在并行執行,也有人解釋說一次處理很多的請求。宏觀上的并行,底層實際上是以時間片進行輪轉。
并行:真正意義上的并行,無論是宏觀還是微觀上面都是真正意義上的并行。
那麼多線程究竟是并發還是并行。分情況:如果你有4個處理器并且處于空閑狀态,那麼你的程式隻開啟了4個線程,那麼這就是真正意義上的并行。如果你的線程大于四個或者說線程數大于處理器空閑的狀态,那麼此時就是并發狀态。也有可能并發和并行同時進行。但是如果你的硬體是單處理器,那麼毫無疑問你隻能是并發狀态。
我們使用java進行開發的時候,至少開啟了2個線程,一個是主線程,一個是垃圾收集器的線程。
2)程序與線程之間的差別
程序:指的是我們正在運作的程式。以前的電腦都是單程序電腦(隻能開一個任務的年代),什麼多任務處理器之類的東西,如果想要詳細了解去翻翻作業系統吧。
線程:一個程序可能包含有多個線程,一般情況下都包含多個。線程:指的是一個執行流程。最經典的例子就是大學時候學習的電影院賣票的例子。3個從業人員賣票實際上就是開啟了3個線程。
以上就是多線程的一些基本的理論知識。接下來将會是3種在java中實作多線程的方案,以及其中的優缺點。