天天看點

Java實作多線程的兩種方式

認識多線程之前,我們先要了解幾個關于多線程有關的概念。

A:程序:程序指正在運作的程式。确切的來說,當一個程式進入記憶體運作,即變成一個程序,程序是處于運作過程中的程式,并且具有一定獨立功能。

B:線程:線程是程序中的一個執行單元,負責目前程序中程式的執行,一個程序中至少有一個線程。一個程序中是可以有多個線程的,這個應用程式也可以稱之為多線程程式。

C:簡而言之:一個程式運作後至少有一個程序,一個程序中可以包含多個線程

什麼是多線程呢?即就是一個程式中有多個線程在同時執行。

線程實作方式

繼承Thread類

A:建立線程的步驟:

1.定義一個類繼承Thread。

2.重寫run方法。

3.建立子類對象,就是建立線程對象。

4.調用start方法,開啟線程并讓線程執行,同時還會告訴jvm去調用run方法

代碼案例

public class MyThread extends Thread {
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			System.out.println(getName() + ":" + i);
		}
	}
}

           

測試

/*
 * 多線程的實作方式:
 * 		方式1:一種方法是将類聲明為 Thread 的子類。該子類應重寫 Thread 類的 run 方法。接下來可以配置設定并啟動該子類的執行個體
 * 
 * Thread
 * 		String getName()      傳回該線程的名稱。 
 * 		void   setName(String name) 改變線程名稱,使之與參數 name 相同。
 * 
 * 
 * CPU執行程式的随機性
 */
public class ThreadDemo2 {
	public static void main(String[] args) {
		//建立線程執行個體
		MyThread mt = new MyThread();
		//修改線程名字
		mt.setName("張三");
		
		//啟動線程
		mt.start();
		
		//建立線程執行個體
		MyThread mt2 = new MyThread();
		mt2.setName("老王");
		
		//啟動線程
		mt2.start();
	}
}

           

實作Runnable接口

建立線程的另一種方法是聲明實作 Runnable 接口的類。該類然後實作 run 方法。然後建立Runnable的子類對象,傳入到某個線程的構造方法中,開啟線程。

為何要實作Runnable接口,Runable是啥玩意呢?繼續API搜尋。

檢視Runnable接口說明文檔:Runnable接口用來指定每個線程要執行的任務。包含了一個 run 的無參數抽象方法,需要由接口實作類重寫該方法。

public class MyThread2 implements Runnable {
	int num;
	
	public MyThread2(int num) {
		this.num = num;
	}
	
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			//Thread t = Thread.currentThread();
			//System.out.println(t.getName() + ":" + i);
			
			//鍊式程式設計
			System.out.println(Thread.currentThread().getName() + ":" + i + num);
		}
	}

}