多執行緒的實作方法:
繼承Thread類別
實作Runnable類別
--------------------------------------- -------------------------------------------------- ----
1. 繼承Thread類別
繼承Thread類別之後,需要覆寫父類別的public void run() 方法,作為執行緒的主方法。
所有執行緒的執行一定是並發的,即:同一個時間段上會有多個執行緒交替執行。為了達到這樣的目的,絕對不能直接呼叫run()方法,而是應該呼叫Thread類別的start()方法啟動多執行緒。
呼叫 start() 方法與呼叫 run() 方法的比較:
public class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } @Override public void run() { for(int i=0; i<10; i++) { System.out.println(name + "打印:" + i); } } public static void main(String[] args) { MyThread mt1 = new MyThread("线程A"); MyThread mt2 = new MyThread("线程B"); MyThread mt3 = new MyThread("线程C"); mt1.start(); mt2.start(); mt3.start(); } }
運作結果:(三個執行緒同時且交替執行依序執行)
2. start()方法實作多執行緒的原理
開啟Thread類別來源程式碼中()方法是所在作業系統的方法。
原理圖
結論:只有Thread類別的start()方法才能進行作業系統資源的分配,所以啟動多執行緒的方式永遠就是Thread類別的start()方法。