簡單瞭解Java建立執行緒兩種方法
阿新 • • 發佈:2020-02-12
這篇文章主要介紹了簡單瞭解Java建立執行緒兩種方法,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
Java實現並啟動執行緒有兩種方法
1、寫一個類繼承自Thread類,重寫run方法。用start方法啟動執行緒
2、寫一個類實現Runnable介面,實現run方法。用new Thread(Runnable target).start()方法來啟動
注意:start方法不是立即執行多執行緒,而是使得該執行緒變為就緒態(Runnable)
1.通過擴充套件Thread類來建立執行緒
(1)定義Thread類的子類,並重寫該類的run方法,該run方法的方法體就代表了執行緒要完成的任務。因此把run()方法稱為執行體。
(2)建立Thread子類的例項,即建立了執行緒物件。
(3)呼叫執行緒物件的start()方法來啟動該執行緒。
public class MutliThreadDemo { public static void main(String[] args) { //建立Thread子類的例項,即建立了執行緒物件 MutliTread mt1 = new MutliTread("Thread"); //不立即執行多執行緒程式碼,而是使得該執行緒變為就緒態(Runnable) mt1.start(); } } //通過擴充套件Thread類來建立執行緒 class MutliTread extends Thread{ public MutliTread(String name) { this.setName(name); //或super(name) } public void run() { for(int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } }
2.通過Runnable介面建立執行緒
(1)定義runnable介面的實現類,並實現該介面的run()方法,該run()方法的方法體同樣是該執行緒的執行緒執行體。
(2)建立 Runnable實現類的例項,並依此例項作為Thread的target來建立Thread物件,該Thread物件才是真正的執行緒物件。
(3)呼叫執行緒物件的start()方法來啟動該執行緒。
public class MutliThreadDemo3 { public static void main(String[] args) { //建立一個Runnable介面實現類 MutliTread3 m = new MutliTread3(); //例項化執行緒物件 Thread t1 = new Thread(m,"甲"); Thread t2 = new Thread(m,"乙"); Thread t3 = new Thread(m,"丙"); t1.start(); t2.start(); t3.start(); } } class MutliTread3 implements Runnable{ public void run() { for(int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } } }
當然第二種方法也可通過匿名內部類或lambda表示式實現,會更簡潔。以下通過Lambda表示式實現run方法:
public class MutliThreadDemo3 { public static void main(String[] args) { Runnable r = () -> { for(int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + ":" + i); } }; //例項化執行緒物件 Thread t1 = new Thread(r,"甲"); Thread t2 = new Thread(r,"乙"); Thread t3 = new Thread(r,"丙"); t1.start(); t2.start(); t3.start(); } }
注:以上三種方式(本質上是兩種)建立的三個執行緒其實是互相獨立的
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。