Java多執行緒中關於Thread與runnable的差異詳解
這篇文章主要介紹了java 多線程Thread與runnable的區別的相關資料,java線程有兩種方法繼承thread類與實現runnable接口,下面就提供實例幫助大家理解,需要的朋友可以參考
java 多執行緒Thread與runnable的差異
java中實作多執行緒的方法有兩種:繼承Thread類別和實作runnable介面
1,繼承Thread類,重寫父類別run()方法
public class thread1 extends Thread { public void run() { for (int i = 0; i < 10000; i++) { System.out.println("我是线程"+this.getId()); } } public static void main(String[] args) { thread1 th1 = new thread1(); thread1 th2 = new thread1(); th1.run(); th2.run(); } }
run()方法只是普通的方法,是順序執行的,即th1.run()執行完成後才執行th2.run(),這樣寫只用一個主執行緒。多執行緒就失去了意義,所以應該用start()方法來啟動執行緒,start()方法會自動呼叫run()方法。上述程式碼改為:
public class thread1 extends Thread { public void run() { for (int i = 0; i < 10000; i++) { System.out.println("我是线程"+this.getId()); } } public static void main(String[] args) { thread1 th1 = new thread1(); thread1 th2 = new thread1(); th1.start(); th2.start(); } }
透過start()方法啟動一個新的執行緒。這樣不管th1.start()呼叫的run()方法是否執行完,都繼續執行th2.start()如果下面有別的程式碼也同樣不需要等待th2.start()執行完成,而繼續執行。 (輸出的執行緒id是無規則交替輸出的)
2,實作runnable介面
public class thread2 implements Runnable { public String ThreadName; public thread2(String tName){ ThreadName = tName; } public void run() { for (int i = 0; i < 10000; i++) { System.out.println(ThreadName); } } public static void main(String[] args) { thread2 th1 = new thread2("线程A"); thread2 th2 = new thread2("Thread-B"); th1.run(); th2.run(); } }
和Thread的run方法一樣Runnable的run只是普通方法,在main方法中th2.run()必須等待th1.run()執行完成後才能執行,程式只用一個執行緒。要多執行緒的目的,也要透過Thread的start()方法(runnable是沒有start方法)。上述程式碼修改為:
public class thread2 implements Runnable { public String ThreadName; public thread2(String tName){ ThreadName = tName; } public void run() { for (int i = 0; i < 10000; i++) { System.out.println(ThreadName); } } public static void main(String[] args) { thread2 th1 = new thread2("线程A"); thread2 th2 = new thread2("Thread-B"); Thread myth1 = new Thread(th1); Thread myth2 = new Thread(th2); myth1.start(); myth2.start(); } }
總結:實作java多執行緒的2種方式,runable是接口,thread是類,runnable只提供一個run方法,建議使用runable實作java多執行緒,不管如何,最終都需要透過thread.start()來使執行緒處於可運行狀態。
以上是Java多執行緒中關於Thread與runnable的差異詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

Java 8引入了Stream API,提供了一種強大且表達力豐富的處理數據集合的方式。然而,使用Stream時,一個常見問題是:如何從forEach操作中中斷或返回? 傳統循環允許提前中斷或返回,但Stream的forEach方法並不直接支持這種方式。本文將解釋原因,並探討在Stream處理系統中實現提前終止的替代方法。 延伸閱讀: Java Stream API改進 理解Stream forEach forEach方法是一個終端操作,它對Stream中的每個元素執行一個操作。它的設計意圖是處

Java是熱門程式語言,適合初學者和經驗豐富的開發者學習。本教學從基礎概念出發,逐步深入解說進階主題。安裝Java開發工具包後,可透過建立簡單的「Hello,World!」程式來實踐程式設計。理解程式碼後,使用命令提示字元編譯並執行程序,控制台上將輸出「Hello,World!」。學習Java開啟了程式設計之旅,隨著掌握程度加深,可創建更複雜的應用程式。
