執行緒中的狀態轉換和Thread 中的sleep()方法
阿新 • • 發佈:2019-01-31
1. 執行緒中的狀態轉換圖如下:
分析如下:
CPU就是一個大大的廁所,所有的執行緒就好比是上廁所一樣。
建立: 這個時候就是建立一個執行緒物件。
start(): 剛建立的執行緒物件,對CPU大喊,我要上廁所 。
就緒狀態: CPU聽到你的話了,但是並不是馬上讓你上廁所,而是讓你去排隊,因為廁所裡面的茅坑可能不夠用。
執行狀態: CPU告訴你可以到茅坑位上面解決大便了,這個時候你正在茅坑上,舒服的解決。
阻塞狀態:你拉著拉著,卻發現沒有帶紙,所以你必須一直在茅坑上等著,你起不起來,因為你沒有擦屁股,所以你要別人送紙給你,讓你解除阻塞。
終止:你的大便拉完了,沒有什麼留戀的了,你就離開廁所了,也就是離開了CPU了。
執行緒控制的基本方法:
我們簡單的測試一下sleep()方法:
專案結構:
package com.niepengfei.test; import java.util.Date; public class MyThread extends Thread{ /** * 每隔一秒鐘就是列印當前時間 */ @Override public void run() { boolean flag = true; while(flag){ System.out.println("***"+ new Date() + "***"); try { sleep(1000); } catch (InterruptedException e) { flag = false; } } } }
package com.niepengfei.test; public class TestThread2 { public static void main(String[] args) { /** * 主執行緒睡眠10秒鐘後,會主動打斷t2執行緒,這個時候t2執行緒就會終止執行 */ MyThread t2 = new MyThread(); t2.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { } t2.interrupt(); } }
執行結果: