大佬的理解->Jaca多線程(一)多線程基礎 1、線程狀態關係 2、線程的狀態分析 線程的五種狀態:創建-就緒-運行-阻塞-死亡 1.創建狀態 創建線程對象之後,尚未調用其start方法之前; 2.可運行狀態:就緒和運行 1)當調用start()方法啟動線程之後,如果cup沒有給當前線程分配資源,當 ...
大佬的理解->Jaca多線程(一)多線程基礎
1、線程狀態關係
2、線程的狀態分析
線程的五種狀態:創建-就緒-運行-阻塞-死亡
1.創建狀態
創建線程對象之後,尚未調用其start方法之前;
2.可運行狀態:就緒和運行
1)當調用start()方法啟動線程之後,如果cup沒有給當前線程分配資源,當前線程就是就緒狀態;
2)一旦獲到cpu分配的資源,就進入運行狀態;
3.運行狀態:線程獲得cpu資源,開始運行;
4.阻塞狀態
一個正在運行的線程因某種原因不能繼續運行時,進度阻塞狀態。阻塞狀態一種“不可運行”的狀態,而處於這種狀態的線程在得到一個特定的事件之後會轉回可運行的狀態;
5.死亡狀態
一個線程的run()方法執行完畢,stop()方法被調用或在運行過程中出現未捕捉的異常時,線程進入死亡狀態,線程就不可以再次執行;
3、案例
案例
public class MyThreadState implements Runnable{
@Override
public void run() {
System.out.println("---3 運行狀態---");
//線程休眠,單位是毫秒
try {
System.out.println("---4.1 進入阻塞--");
Thread.sleep(2000);
System.out.println("---4.2 恢復運行狀態---");
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("---5.1死亡狀態---");
}
System.out.println("---5.2 死亡狀態---");
}
public static void main(String[] args) {
//線程的狀態演示
MyThreadState myThreadState = new MyThreadState();
Thread thread = new Thread(myThreadState);
System.out.println("---1 創建狀態---");
thread.start();
System.out.println("---2 就緒狀態---");
}
}
運行結果
---1 創建狀態---
---2 就緒狀態---
---3 運行狀態---
---4.1 進入阻塞--
---4.2 恢復運行狀態---
---5.2 死亡狀態---