實現線程的經常使用的方法有以上幾種,在選擇實現線程的方法要注意如下幾點:java
(1)生命週期設計模式
NEW (新建)函數
RUNNABLE(可運行)源碼分析
RUNNING (運行)性能
BLOCKED (阻塞)線程
TERMINATED(中斷)設計
(2)轉化過程圖示:3d
(3)注意點:cdn
使用 new 建立一個Thread 對象中,此時它並不處在執行狀態,在沒有執行Thread.start()方法前,只是一個普通的Thread對象,經過start進入RUNNABLE狀態,這時候纔會真正在JVM中建立了一個線程。對象
線程對象進入RUNNABLE必須調用start,可是線程的運行與否,同樣須要放任與CPU的調度。進入RUNNABLE狀態後,線程只能意外終止或者進入RUNNING狀態。
線程對象進入RUNNING後,可能會有如下的可能
線程對象進入BLOCKED後,可能會如下狀態
(1)sleep() 和 yield()區別
(2)interrupt:線程的flag將會被設置,打斷正在運行的狀態。
(3)isInterrupted:線程狀態的判斷
(4)interrupted:是一個靜態方法,會將當前的線程的狀態設置爲false,返回當前狀態,第一次返回true,一直調用都只會返回false
線程的默認命名:線程會以"Thread-"做爲一個自增數字爲組合。
新建立的任何一個線程都會有一個父線程
新建的線程若是沒有顯示指定線程組,則他會加入到父線程的線程組中。
start()分析:模板設計模式:線程真正的邏輯實如今run方法中,咱們須要經過重寫Runnable接口對其進行構造,run方法是一個空的實現