天天看點

多線程總結一

 這幾天項目不急,覺得自己基礎不是很牢固,是以花了點時間做一做多線程方面的總結。

  1.          線程的生命周期  

     2.           對于上面的生命周期進行一波解釋

多線程總結一

            1) 建立狀态   我的了解就是線程的建立

          2)就緒狀态  我的了解就是線程準備完畢,就是告訴計算機為我準備好了,可以讓我開始執行了,但是不一定馬上就                                 會執行你

           3) 執行狀态   正式的開始執行相關的代碼,也就是你需要做的事情,這個最複雜,可能會發生三種情況

                            第一可能會被阻塞,如sleep操作,wait操作,yield操作等

                            第二可能會進入就緒狀态,比如yield操作後發現自己是最高優先,那麼就會重新開始執行本線程

                            第三 可能再次進入到就緒狀态,可能阻塞時間非常短暫,那麼可能會進入到就緒狀态。

                            第四 正常操作進入到死亡狀态。

          4) 死亡狀态:線程被終止。   

      3.            對于多線程需要了解的幾個常識性問題

                       1)并發與并行

                               并發:也就是邏輯意義上面的并發,讓使用者看起來是2個或者多個線程同時在做,實際上是以時間片輪轉的方式進行的,隻是說速度非常的快,給人的感覺就像是有多個在并行執行,也有人解釋說一次處理很多的請求。宏觀上的并行,底層實際上是以時間片進行輪轉。

                               并行:真正意義上的并行,無論是宏觀還是微觀上面都是真正意義上的并行。

                               那麼多線程究竟是并發還是并行。分情況:如果你有4個處理器并且處于空閑狀态,那麼你的程式隻開啟了4個線程,那麼這就是真正意義上的并行。如果你的線程大于四個或者說線程數大于處理器空閑的狀态,那麼此時就是并發狀态。也有可能并發和并行同時進行。但是如果你的硬體是單處理器,那麼毫無疑問你隻能是并發狀态。

                                我們使用java進行開發的時候,至少開啟了2個線程,一個是主線程,一個是垃圾收集器的線程。

                        2)程序與線程之間的差別

                                  程序:指的是我們正在運作的程式。以前的電腦都是單程序電腦(隻能開一個任務的年代),什麼多任務處理器之類的東西,如果想要詳細了解去翻翻作業系統吧。

                                   線程:一個程序可能包含有多個線程,一般情況下都包含多個。線程:指的是一個執行流程。最經典的例子就是大學時候學習的電影院賣票的例子。3個從業人員賣票實際上就是開啟了3個線程。

                                  以上就是多線程的一些基本的理論知識。接下來将會是3種在java中實作多線程的方案,以及其中的優缺點。

繼續閱讀