資源簡介
Java 給多線程編程提供了內置的支持。 一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,每條線程并行執行不同的任務。
多線程是多任務的一種特別的形式,但多線程使用了更小的資源開銷。
這里定義和線程相關的另一個術語 - 進程:一個進程包括由操作系統分配的內存空間,包含一個或多個線程。一個線程不能獨立的存在,它必須是進程的一部分。一個進程一直運行,直到所有的非守護線程都結束運行后才能結束。
多線程能滿足程序員編寫高效率的程序來達到充分利用 CPU 的目的。
一個線程的生命周期
線程是一個動態執行的過程,它也有一個從產生到死亡的過程。
下圖顯示了一個線程完整的生命周期。
-
新建狀態:
使用 new 關鍵字和 Thread 類或其子類建立一個線程對象后,該線程對象就處于新建狀態。它保持這個狀態直到程序 start() 這個線程。
-
就緒狀態:
當線程對象調用了start()方法之后,該線程就進入就緒狀態。就緒狀態的線程處于就緒隊列中,要等待JVM里線程調度器的調度。
-
運行狀態:
如果就緒狀態的線程獲取 CPU 資源,就可以執行 run(),此時線程便處于運行狀態。處于運行狀態的線程最為復雜,它可以變為阻塞狀態、就緒狀態和死亡狀態。
-
阻塞狀態:
如果一個線程執行了sleep(睡眠)、suspend(掛起)等方法,失去所占用資源之后,該線程就從運行狀態進入阻塞狀態。在睡眠時間已到或獲得設備資源后可以重新進入就緒狀態??梢苑譃槿N:
-
等待阻塞:運行狀態中的線程執行 wait() 方法,使線程進入到等待阻塞狀態。
-
同步阻塞:線程在獲取 synchronized 同步鎖失敗(因為同步鎖被其他線程占用)。
-
其他阻塞:通過調用線程的 sleep() 或 join() 發出了 I/O 請求時,線程就會進入到阻塞狀態。當sleep() 狀態超時,join() 等待線程終止或超時,或者 I/O 處理完畢,線程重新轉入就緒狀態。
-
-
死亡狀態:
一個運行狀態的線程完成任務或者其他終止條件發生時,該線程就切換到終止狀態。
線程的優先級
每一個 Java 線程都有一個優先級,這樣有助于操作系統確定線程的調度順序。
Java 線程的優先級是一個整數,其取值范圍是 1 (Thread.MIN_PRIORITY ) - 10 (Thread.MAX_PRIORITY )。
默認情況下,每一個線程都會分配一個優先級 NORM_PRIORITY(5)。
具有較高優先級的線程對程序更重要,并且應該在低優先級的線程之前分配處理器資源。但是,線程優先級不能保證線程執行的順序,而且非常依賴于平臺。
創建一個線程
Java 提供了三種創建線程的方法:
- 通過實現 Runnable 接口;
- 通過繼承 Thread 類本身;
- 通過 Callable 和 Future 創建線程。
通過實現 Runnable 接口來創建線程
創建一個線程,最簡單的方法是創建一個實現 Runnable 接口的類。
為了實現 Runnable,一個類只需要執行一個方法調用 run(),聲明如下:
代碼片段和文件信息
- 上一篇:ssm配置文件
- 下一篇:java swing樹形菜單結構,動態選擇數據
評論
共有 條評論
相關資源
- java swing樹形菜單結構,動態選擇數據
- java高德地圖百度人臉
- 黑馬程序員 javaweb源碼
- 后端提供接口文檔模板(.docx)
-
android 中 ja
vasc ript 與java 交互 - 批量替換 android反編譯之后 R.java文件
- java 數字證書 (廣大信息安全研究所
- android java 通用代碼,關于用propertie
- java 圖片壓縮
- jQuery便條插件+jStickyNote
- android 多線程斷電續傳文件
- SCJP_認證考試指南
- Android自動生成JavaBean
- java 入門級(類 繼承 入門)
- java將文件壓縮為RAR文檔(原理是調用
- java 讀取PDF文件中的內容.zip
- java版:ECC加密解密
- Android 使用WebView訪問明日學院(網絡
- Android 國內新聞(網絡編程-13_120).
- Java面試寶典2019版.pdf
- 《Java 8實戰》pdf 高清版
- 基于SpringBoot實現Java高并發之秒殺系統
- java設計模式4562
- java電影網站源碼(附數據庫)
- Java數據結構和算法(第二版).pdf
- 北大青鳥S2java第十章嗖嗖移動大廳
- 銀行利率計算工具Android Studio項目
- spring boot mybatis jsp前端展示對mysql增刪
- 基于jsp+mysql的二手物品交易系統源碼