1. 程式人生 > >學習筆記——多執行緒(持續更新中)

學習筆記——多執行緒(持續更新中)

1、程序與執行緒的區別:程序是所有執行緒的集合,每一個執行緒是程序中的執行路徑。

     根據我的理解,其實程序就可以看成是公共廁所,執行緒看做是廁所裡的隔斷間,一個廁所可以有很多個隔斷間,也可以有一個隔斷間。當人們上廁所的時候,如果廁所只有一個隔斷間上廁所的只有一個人,那麼效率是沒問題的,但是如果人多了還只有一個隔斷間的話那麼就得排隊,效率也就顯得不好了,提高公共廁所的使用率就是增加廁所的隔斷間數,也就是多程序。所以為什麼使用多執行緒也就顯而易見了,使用多執行緒可以提高程式的使用效率。

2、多執行緒的建立方式(三種)

①繼承Thread類,重寫run方法。

class CreateThread extends Thread {
	// run方法中編寫 多執行緒需要執行的程式碼
	publicvoid run() {
		for (inti = 0; i< 10; i++) {
			System.out.println("i:" + i);
		}
	}
}
publicclass ThreadDemo {

	publicstaticvoid main(String[] args) {
		System.out.println("-----多執行緒建立開始-----");
		// 1.建立一個執行緒
		CreateThread createThread = new CreateThread();
		// 2.開始執行執行緒 注意 開啟執行緒不是呼叫run方法,而是start方法
		System.out.println("-----多執行緒建立啟動-----");
		createThread.start();
		System.out.println("-----多執行緒建立結束-----");
	}

}

②實現Runnable介面,重寫run方法。

class CreateRunnable implements Runnable {

	@Override
	publicvoid run() {
		for (inti = 0; i< 10; i++) {
			System.out.println("i:" + i);
		}
	}

}

publicclass ThreadDemo {
	publicstaticvoid main(String[] args) {
		System.out.println("-----多執行緒建立開始-----");
		// 1.建立一個執行緒
		CreateRunnable createThread = new CreateRunnable();
		// 2.開始執行執行緒 注意 開啟執行緒不是呼叫run方法,而是start方法
		System.out.println("-----多執行緒建立啟動-----");
		Thread thread = new Thread(createThread);
		thread.start();
		System.out.println("-----多執行緒建立結束-----");
	}
}

③使用匿名內部類建立多執行緒。

System.out.println("-----多執行緒建立開始-----");
Thread thread = new Thread(new Runnable() {
    public void run() {
		for (int i = 0; i< 10; i++) {
			System.out.println("i:" + i);
		}
	}
});
thread.start();
System.out.println("-----多執行緒建立結束-----");

常用執行緒api方法

start()

啟動執行緒

currentThread()

獲取當前執行緒物件

getID()

獲取當前執行緒ID      Thread-編號  該編號從0開始

getName()

獲取當前執行緒名稱

sleep(long mill)

休眠執行緒

Stop()

停止執行緒,

常用執行緒建構函式

Thread()

分配一個新的 Thread 物件

Thread(String name)

分配一個新的 Thread物件,具有指定的 name正如其名。

Thread(Runable r)

分配一個新的 Thread物件

Thread(Runable r, String name)

分配一個新的 Thread物件

--------------------------------------------------------------------分割線,未完待續-----------------------------------------------------