1. 程式人生 > >Java中的線程狀態轉換和線程控制常用方法

Java中的線程狀態轉換和線程控制常用方法

img sta () throw line star height style 技術

Java 中的線程狀態轉換:

  技術分享

【註】:不是 start 之後就立刻開始執行, 只是就緒了(CPU 可能正在運行其他的線程).

【註】:只有被 CPU 調度之後,線程才開始執行, 當 CPU 分配給你的時間片到了, 又回到就緒狀態, 繼續排隊等候.

線程控制的基本方法:

  isAlive(): 判斷線程是否還活著, start 之後,終止之前都是活的;

  getPriority(): 獲得線程的優先級數值;

  setPriority(): 設置線程的優先級數值(線程室友優先級別的);

  Thread.sleep(): 將當前線程睡眠指定毫秒數;

  join(): 調用某線程的該方法, 將當前線程與該線程合並, 也即等待該線程結束後, 再恢復當前線程的運行狀態(比如在線程B中調用了線程A的 join() 方法,直到線程A執行完畢後,才會繼續執行線程B);

  yield(): 當前線程讓出 CPU, 進入就緒狀態, 等待 CPU 的再次調度;

  wait(): 當前線程進入對象的 wait pool;

  notify()/notifyAll(): 喚醒對象的 wait pool 中的一個/所有的等待線程.

1. sleep()方法:

  ① 可以調用 Thread 的靜態方法:

    public static void sleep(long millis) throws InterruptedException:在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行),此操作受到系統計時器和調度程序精度和準確性的影響, 該線程不丟失任何監視器的所屬權.

  ② 由於是靜態方法, sleep() 可以由類名直接調用.

    Thread.sleep(.....);

Java中的線程狀態轉換和線程控制常用方法