天天看點

java 多線程之繼承Thread類實作建立多線程及實作Runnable接口建立多線程

java 多線程之繼承Thread類實作建立多線程及實作Runnable接口建立多線程

    • 1.Java 多線程之Thread類
    • 2.繼承Thread類實作建立多線程
    • 3.通過實作Runnable接口的方式建立多線程
    • 4.Thread類常用的方法

1.Java 多線程之Thread類

  1. Java語言的JVM允許程式運作多個線程,它通過java.lang.Thread類來實作。
  2. Thread類的特性

    ① 每個線程都是通過某個特定Thread對象的run()方法來完成操作的,經常把run()方法的主體稱為線程體

    ② 通過該Thread對象的start()方法來調用這個線程

  3. Thread類構造方法

    ① Thread():建立新的Thread對象

    ② Thread(String threadname):建立線程并指定線程執行個體名

    ③ Thread(Runnable target):指定建立線程的目标對象,它實作了Runnable接口中的run方法

    ④ Thread(Runnable target, String name):建立新的Thread對象

2.繼承Thread類實作建立多線程

  1. 建立一個子線程,完成1-100之間的自然數的輸出,同的主線程執行同樣的操作 創
  2. 步驟
    1. 定義子類繼承Thread類。
    2. 子類中重寫Thread類中的run方法。
    3. 建立Thread子類對象,即建立了線程對象。
    4. 調用線程對象start方法:啟動線程,調用run方法
//1.繼承Thread
class SubThread extends Thread{
	//2.重寫Threa類的run()方法、方法内實作此子線程要完成的工作
	public void run() {
		for (int i = 1; i <= 100; i++) {
			System.out.println(Thread.currentThread().getName()+ ":"+i);
		}
	}
}
public class TestThread {
	public static void main(String[] args) {
		//3.建立一個子類的對象
		SubThread st = new SubThread();
		SubThread st1 = new SubThread();
		//4.調用線程的start()方法,啟動此線程:調用相應的run()方法;
		//5.一個線程隻能執行依次start();且不能調用run(),如需多次啟動start()則需帶建立類對象
		st.start();
		for (int i = 1; i <= 100; i++) {
			System.out.println(Thread.currentThread().getName()+ ":"+i);
		}
	}
}
           
  1. 運作輸出結果
java 多線程之繼承Thread類實作建立多線程及實作Runnable接口建立多線程

5. 運作過程為下圖的運作過程,然後子線程和主線程誰搶到資源就列印誰

java 多線程之繼承Thread類實作建立多線程及實作Runnable接口建立多線程

3.通過實作Runnable接口的方式建立多線程

  1. 實作一個子線程輸出1-100到偶數。
  2. 步驟

    1)定義子類,實作Runnable接口。

    2)子類中重寫Runnable接口中的run方法。

    3)通過Thread類含參構造器建立線程對象。

    4)将Runnable接口的子類對象作為實際參數傳遞給Thread類的構造方法中。

    5)調用Thread類的start方法:開啟線程,調用Runnable子類接口的run方法。

  3. demo
// 1.建立一個實作了Runnable接口的類
class RunnableClass implements Runnable{
	//2.實作接口的抽象方法
	@Override
	public void run() {
		//子線程要執行的代碼
		for (int i = 1; i <= 100; i++) {
			if(i % 2 == 0) {
				System.out.println(Thread.currentThread().getName()+ ":"+i);
			}	
		}
	}
	
}
public class TestThread {
	public static void main(String[] args) {
		//3.建立一個Runnable接口實作類的對象
		
		RunnableClass r = new RunnableClass();
		//4.将此對象作為形參傳遞給Thread類構造器中,建立Thread類的對象,此對象即為一個線程
		Thread t = new Thread(r);
		//要想啟動一個多線程,必須調用start()方法
		//5.調用start()方法,啟動線程并執行run()
		t.start();//啟動線程,執行Thread對象生成時構造器形參的run()方法
		
		//再建立一個線程
		Thread t2 = new Thread(r);
		t2.start();
	}
}

           

4.Thread類常用的方法

  1. 點選進入多線程之Thread類的常用方法及線程排程優先級等

繼續閱讀