【多執行緒總結(一)-基礎總結】

我是太陽啦啦啦發表於2018-09-02

前言:

  多執行緒在我們的程式開發過程中起著關鍵的作用,本篇部落格我們們從基本的知識開始講起,來共同分享一下多執行緒的知識

核心:

  什麼是執行緒呢?我們們首先可以從程式來說,程式是指在系統中正在執行的一個應用程式,在計算機中,一個任務就是一個進行,在每一個程式內部至少要有一個執行緒在執行,一個程式可以有多個執行緒,比如像生活中的例項,檢票是一個程式,那麼每個檢票的人是執行緒.下面我們們來說建立執行緒的方式.
 1.建立執行緒方式的有兩種:
  方式一:繼承thread,重寫run方法,
  方式二:實現runnable
但是我在書中看到,作者說準確的講,建立執行緒只有一種方式那就是構造thread類,而實現執行緒的執行單元則有兩種方式:
  第一種:重寫thread的run方法,
  第二種:實現runnable介面的run方法,並且將runnable例項用作構造thread的引數.
2.執行緒的生命週期:
  new
  runnable
  running
  blocked
  terminated
新建—-就緒—執行—-阻塞—死亡,new的狀態通過start方法進入runnable狀態,runnable狀態必須呼叫start方法,此時才是真正的在jvm程式中建立了一個執行緒.running狀態除了不能到達new狀態,其他的狀態都可以到達.
3.runnable介面:
  只定義了無參無返回值的run方法.
  重寫thread類的run方法和實現runnable介面的run方法還有一個很重要的不同,那就是thread類的run方法是不能共享的,也就是說A執行緒不能把B執行緒的run方法當做自己的執行單元,而使用runnable介面很容易能實現這一點,使用同一個runnable的例項構造不同的thread例項.
4.在這裡,我們學到了守護執行緒
  守護執行緒
  守護執行緒是一類比較特殊的執行緒,一般用於處理一些後臺的工作.
  守護執行緒設定,呼叫setDaemon方法將thread設定為守護執行緒,true代表守護執行緒,false代表正常執行緒.
守護執行緒的作用:
  守護執行緒經常用作與執行一些後臺任務,因此有時它也被稱為後臺執行緒,當你希望關閉某執行緒的時候,或者退出JVM程式的時候,或者退出JVM程式的時候,一些執行緒能夠自動關閉,此時就可以考慮用守護執行緒為你完成這樣的工作.
5.說到了Thread API,那麼我們們來比較一下yield和sleep的區別;
  sleep只會導致當前執行緒暫停指定的時間,沒有CPU時間片的消耗
  yield只是對CPU排程器的一個提示,如果CPU排程器沒有忽略這個提示,他會導致執行緒上下文的切換.
  sleep會使執行緒短暫block,會在給定的時間內釋放CPU資源
  yield會使running狀態的thread進入runnable狀態
  sleep幾乎百分之百的完成了給定時間的休眠,二yield的提示並不能一定擔保
一個執行緒sleep另一個執行緒呼叫interrupt會捕獲中斷訊號,二yield不會.

總結:

  本篇部落格暫時講到這裡,下一篇部落格我們們來說執行緒安全與執行緒同步.

相關文章