多線程之線程的創建、優先級、守護與相關方法

多線程

一、概念:

並行和併發:

並行是指多個事件在同一時刻發生。

併發是指多個事件在同一時刻間隔發生。

**多線程:**宏觀上的並行,微觀上的串行。

​ 意義:解決併發。

**進程:**資源分配的最小單位,一個進程可以包含多個線程。

**線程:**程序執行的最小單位,一個線程至少屬於一個進程。

二、線程的創建

1、繼承Thread類

/**
 *新增一個類,讓該類繼承Thread類,重寫run()方法,相當於是該子類任務要   *去完成的操作。
**/

public class MyThread extends Thread{
	@Override
	public void run(){
	//要執行的操作
	}
	public static void main(String []args){
		
		//創建線程對象
		MyThread t=new MyThread();
		
		//調用線程的start()方法,會開啓線程,JVM會自動調用run()方法
		//無法開啓一個已經開啓的線程,否則會報 //IllegalThreadStateException異常。
		
		t.start();
		//run()方法可以直接被調用,但是並沒有真正開啓子線程。
		
		t.start();
		
	
	}
}

2、實現Runnable接口

​ 通過實現Runnable接口,新增一個類,來實現run()方法,來完成子任務。

public class MyRunnable implements Runnable{
	
	public static void main(String []args){
		
		MyRunnable r=new MyRunnable();
		
		Thread t = new Thread(r);
		
		t.start();
		
		@Override
		public void run(){
			//要執行的操作。
		}
	}
}

三、線程的方法

static Thread currentThread():返回當前正在執行的線程對象的引用。

static void sleep(long millis):在指定的毫秒數內讓當前正在執行的線程進入休眠(阻塞)狀態。

static void yield():暫停當前正在執行的線程對象,並執行其他對象。(當前線程進入就緒態)

String getName():返回線程的名稱。

void setName(String name):改變線程名稱。

void setDaemon(boolean on):將該線程標記爲守護線程或用戶線程。

void setPriority(int newPriority):更改線程的優先級。

四、線程的啓動

​ 調用start()方法完成線程的開啓,strat()會自動調用run()方法/

​ 但是如果直接調用run(),不會有運行異常,並不會開啓子線程,整個運行過程中只有一個main主線程。

​ 無法啓動一個已經啓動了的線程,否則會拋出IlleaglThreadStateException異常。

五、線程的優先級

​ 通過線程對象的setPriority()方法可以設置線程的優先級,優先級高的線程只是搶到cpu時間片的概率高,不一定比優先級低的線程先執行。

​ 三個優先級常量:

​ MAX_PRIORITY 10

​ NORM_PRIORITY 5

​ MIN_PRIORITY 1

設置線程的優先級範圍是1-10,設置其他值會拋出異常。

六、守護線程

​ 守護線程就是除了用戶線程之外的線程,是爲了“守護”其他線程,其他線程結束後,守護線程可以不必執行完成而提前終止,可以提高效率。

​ 通過setDaemon(boolean)可以設置該線程是否爲守護線程,默認爲false。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章