【多執行緒總結(一)-基礎總結】
前言:
多執行緒在我們的程式開發過程中起著關鍵的作用,本篇部落格我們們從基本的知識開始講起,來共同分享一下多執行緒的知識
核心:
什麼是執行緒呢?我們們首先可以從程式來說,程式是指在系統中正在執行的一個應用程式,在計算機中,一個任務就是一個進行,在每一個程式內部至少要有一個執行緒在執行,一個程式可以有多個執行緒,比如像生活中的例項,檢票是一個程式,那麼每個檢票的人是執行緒.下面我們們來說建立執行緒的方式.
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不會.
總結:
本篇部落格暫時講到這裡,下一篇部落格我們們來說執行緒安全與執行緒同步.
相關文章
- JAVA 多執行緒總結(一)Java執行緒
- 最全java多執行緒學習總結1--執行緒基礎Java執行緒
- java多執行緒總結(系列一)Java執行緒
- iOS 多執行緒總結iOS執行緒
- java多執行緒總結Java執行緒
- Java 多執行緒 - 總結概述Java執行緒
- Android多執行緒總結Android執行緒
- Java多執行緒Queue總結Java執行緒
- 【多執行緒總結(四)-三大性質總結】執行緒
- 多執行緒:執行緒池理解和使用總結執行緒
- Java多執行緒詳解總結Java執行緒
- windows多執行緒同步互斥--總結Windows執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- 多執行緒程式設計總結:一、認識多執行緒本質執行緒程式設計
- MYSQL執行緒池總結(一)MySql執行緒
- iOS多執行緒程式設計:執行緒同步總結iOS執行緒程式設計
- Java執行緒總結Java執行緒
- iOS 多執行緒:『RunLoop』詳盡總結iOS執行緒OOP
- iOS 多執行緒:『GCD』詳盡總結iOS執行緒GC
- Swift多執行緒程式設計總結Swift執行緒程式設計
- iOS多執行緒:『GCD』詳盡總結iOS執行緒GC
- 多執行緒並行執行,然後彙總結果執行緒並行
- 40 個 Java 多執行緒問題總結Java執行緒
- iOS多執行緒程式設計總結(上)iOS執行緒程式設計
- iOS多執行緒程式設計總結(中)iOS執行緒程式設計
- iOS多執行緒程式設計總結(下)iOS執行緒程式設計
- 40個Java多執行緒問題總結Java執行緒
- C++ 多執行緒程式設計總結C++執行緒程式設計
- 執行緒併發總結執行緒
- 多執行緒(三)、執行緒池 ThreadPoolExecutor 知識點總結執行緒thread
- 最全java多執行緒總結2--如何進行執行緒同步Java執行緒
- Java多執行緒與併發程式設計總結(一)Java執行緒程式設計
- 多執行緒學習一(多執行緒基礎)執行緒
- 多執行緒下的程式同步(執行緒同步問題總結篇)執行緒
- Java獲取多執行緒執行結果方式的歸納與總結Java執行緒
- python多執行緒的優缺點總結Python執行緒
- 【多執行緒】常見問題簡單總結執行緒
- MySQL執行緒池總結(二)MySql執行緒