天天看點

《Java線程與并發程式設計實踐》—— 1.4 小結

本節書摘來異步社群《java線程與并發程式設計實踐》一書中的第1章,第1.4節,作者: 【美】jeff friesen,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

java應用程式通過線程執行,線程在程式代碼中具有獨立的執行路徑。每個java應用程式都有一個執行main()函數的預設主線程。應用程式也可以建立線程在背景操作時間密集型任務以確定對使用者的響應。這些封裝了代碼執行序列的線程對象就稱為runnables。

thread類為底層作業系統的線程體系架構提供一套統一接口(作業系統通常負責建立和管理線程)。單個的作業系統線程關聯為一個thread對象。

runnable接口為關聯thread對象的線程提供執行代碼。這些代碼放在runnable的void run()方法中,盡管它不接收任何參數且沒有傳回值,但有可能抛出異常。

除了預設的主線程,線程都是通過建立合适的thread和runnable對象而引入應用程式的。thread類聲明了幾個構造方法來初始化thread對象。其中有幾個構造方法需要接收runnable對象作為參數。

一個thread對象關聯着一條線程的狀态。這個狀态由線程名稱、線程存活的辨別、線程的執行狀态(是否正在執行?)、線程的優先級以及線程是否為守護線程等辨別構成。

在建立一個thread對象或者其子類的對象之後,你可以通過調用thread的void start()方法啟動與該對象關聯的線程。如果線程之前已經啟動且處于運作狀态,又或者線程已經死亡,這個方法就會抛出java.lang.illegal threadstateexception。

之前的線程任務都和如何配置一個線程對象以及啟動關聯的線程相關。不過,thread類也能支援更多進階的任務,包括中斷其他線程、将線程join到另一條線程中以及緻使線程睡眠。

第2章會涉及與同步相關的話題。

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。