1. 程式人生 > >執行緒中的狀態轉換和Thread 中的sleep()方法

執行緒中的狀態轉換和Thread 中的sleep()方法

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();
	}

}

執行結果: