認識多線程之前,我們先要了解幾個關于多線程有關的概念。
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);
}
}
}