在計算機世界中,并發是指一系列相互無關的任務在一臺計算機上同時運行 。對于有多個處理器或者多核處理器的計算機來說,這個同時性是真實發生的 。然而,對于只有單核處理器的計算機來說,它僅僅是表面現象 。
所有現代操作系統均支持并發地執行任務 。用戶可以在聽音樂或者瀏覽網頁的同時閱讀郵件 。這種并發是進程級別的并發 。在同一進程內,也可以有多種同時運行的子任務,我們將這些并發的子任務稱為線程 。與并發性有關的另一個概念是并行性( parallelism ) 。雖然它與并發性的概念不同,但是有一定聯系 。一些學者認為,當多線程應用程序運行在單核處理器上時,程序就是并發運行的;當多線程應用程序運行在多個處理器或者多核處理器上時,程序就是并行運行的 。還有一些學者認為,多線程應用程序的線程執行順序若不是預先定義的,程序就是并發運行的;如果多線程應用程序的線程按照指定順序執行,那么這個程序就是并行運行的 。
本章介紹了如何使用Java 9 API來進行基本的線程操作,包括創建和運行線程、處理線程內拋出的異常、將線程分組,并將分組作為一個整體處理組內的線程 。
1.2線程的創建、運行和設置
本節介紹如何使用Java APl對線程進行基本的操作 。與Java語言中的基本元素一樣,線程也是對象(Object ) 。在Java中,創建線程的方法有以下兩種 。
直接繼承Thread類,然后重寫run()方法 。
構建一個實現Runnable接口的類并重寫run()方法,然后創建該類的實例對象,并以其作為構造
參數去創建Thread類的對象 。建議首選這種方法,因為它可以帶來更多的擴展性 。
在本節中,我們將采用第二種方法創建線程,然后學習如何改變線程的屬性 。Thread類包含如下一些信息屬性,它們能夠輔助區分不同的線程、反映線程狀態、控制其優先級等 。
ID:該屬性存儲了每個線程的唯一標識符 。
Name :該屬性存儲了線程的名字 。
Priority:該屬性存儲了 Thread對象的優先級 。在Java 9中,線程優先級的范圍為1-10 ,其中1表示最低優先級, 10表示最高優先級 。通常不建議修改線程的優先級 。線程優先級僅供底層操作系統作為參考,不能保證任何事情,如果一定要修改,請知曉優先級僅僅代表了一種可能性 。
Status :該屬性保存了線程的狀態 。在Java中,線程有6種狀態-Thread.State枚舉中定義這些狀態: NEW、 RUNABLE 、 BLOCKED 、wAITING、TIMED_MAIING和TERMINATED。這些狀態的具體意義如下 。
NEW: 線程已經創建完畢但未開始執行 。
RUNNABLE: 線程正在JVM中執行 。
BLOCKED: 線程處于阻塞狀態,并且等待獲取監視器 。
WAITING: 線程在等待另一個線程 。
TIMED-MAITING: 線程等待另一個線程一定的時間 。
猜你喜歡
- 藥品價格315網正規嗎 – 好315網是正規網站嗎
- 大數據碼獲取方法 目前開源免費數據庫有哪些
- 昆明網站定制 昆明網站優化
- 如何做網站建設方案,網站建設五個基本流程
- 免費查詢大數據征信 征信大數據
- 現在免費的創業致富 創業致富的好門路
- 免費手機通話錄音軟件 電話錄音軟件
- 免費教你4種分組技巧 微信怎么分組管理好友
- 拼多多砍價網站 拼多多砍價1元10刀網站
- 免費破解pdf加密文件 pdf免費解密方法有什么
