精選乾貨分享 Java線程教程:使用Java創建線程和多線程

通過優銳課的java學習分享中,討論了對Java Thread概念的簡要介紹,很多人覺得很棘手。

與許多其他計算機語言不同,Java提供了對多線程的內置支持。 Java中的多線程包含兩個或多個可以同時運行的部分。 Java線程實際上是一個輕量級進程。

本文將向你介紹許多人發現棘手或難以理解的所有Java Thread概念。

我將介紹以下主題:
1.什麼是Java線程?
2.Java線程模型
3.Java多線程
4.Java主線程
5.如何創建Java線程?

在繼續第一個主題之前,請考慮以下示例:

想象一下具有許多複雜功能的股票經紀人應用程序,例如
1.下載最後的股價
2.檢查價格以獲取警告
3.分析特定公司的歷史數據

這些是耗時的功能。在單線程運行時環境中,這些操作將一個接一個地執行。僅當上一個操作完成後,才能執行下一個操作。

如果歷史分析需要半小時,並且用戶選擇執行下載並事後檢查,則警告可能來不及買賣股票。這是一種需要多線程處理的應用程序。理想情況下,下載應在後臺(即在另一個線程中)進行。這樣,其他進程可能會同時發生,從而例如可以立即傳達警告。一直以來,用戶正在與應用程序的其他部分進行交互。分析也可以在單獨的線程中進行,因此用戶可以在計算結果的同時使用應用程序的其餘部分。
這是Java線程提供幫助的地方。

什麼是Java線程?

線程實際上是一個輕量級進程。 與許多其他計算機語言不同,Java爲多線程編程提供了內置支持。 多線程程序包含兩個或多個可以同時運行的部分。 這樣的程序的每個部分都稱爲線程,每個線程定義執行的單獨路徑。 因此,多線程是多任務的一種特殊形式。

Java線程模型

Java運行時系統在很多方面都依賴於線程。 線程通過防止浪費CPU週期來降低效率。

線程以幾種狀態存在:

新建-創建Thread類的實例時,線程處於新狀態。
運行-Java線程處於運行狀態。
已暫停-可以暫停正在運行的線程,這將暫時暫停其活動。 然後可以恢復被掛起的線程,使它可以從中斷的位置繼續。
阻止-等待資源時可以阻止Java線程。
終止-線程可以終止,這可以在任何給定時間立即停止執行。 線程終止後,將無法恢復。
在這裏插入圖片描述
現在,讓我們跳到Java線程最重要的主題:線程類和可運行接口。
Java中的多線程:線程類和可運行接口

Java的多線程系統建立在Thread類,其方法及其配套接口Runnable的基礎上。 要創建一個新線程,你的程序將擴展Thread或實現Runnableinterface。

Thread類定義了幾種有助於管理線程的方法:
在這裏插入圖片描述
現在,讓我們看看如何使用以所有Java程序具有的主要Java線程開頭的Thread。

Java主線程M

在這裏,我將向你展示如何使用Thread and Runnable接口從主要的Java線程開始創建和管理線程。

爲什麼主線程如此重要?

因爲它影響其他“子”線程。
因爲它執行各種關閉操作。
因爲它是在程序啓動時自動創建的。

如何創建Java線程

Java使你可以通過以下兩種方式之一創建線程:
通過實現Runnable接口。
通過擴展線程。
讓我們看一下這兩種方式如何幫助實現Java線程。
讓我們看一下這兩種方式如何幫助實現Java線程。
可運行的界面
創建線程的最簡單方法是創建一個實現Runnable接口的類。
爲了實現Runnable接口,一個類僅需要實現一個名爲run()的方法,該方法的聲明如下:

public void run( )

在run()內部,我們將定義構成新線程的代碼。 例:

public class MyClass implements Runnable {
public void run(){
System.out.println("MyClass running");
   } 
}

要通過線程執行run()方法,請將MyClass的實例傳遞給其構造函數中的Thread(Java中的構造函數是類似於在創建對象實例時調用的方法的代碼塊)。 這是完成的方式:

Thread t1 = new Thread(new MyClass ());
t1.start();

當線程啓動時,它將調用MyClass實例的run()方法,而不是執行自己的run()方法。 上面的示例將打印出文本“ MyClass running”。
擴展Java線程
創建線程的第二種方法是創建一個擴展Thread的新類,然後重寫run()方法,然後創建該類的實例。 調用start()後,線程將執行run()方法。 這是創建Java Thread子類的示例:

public class MyClass extends Thread {
     public void run(){
     System.out.println("MyClass running");
   }
}

創建並啓動上述線程:

MyClass t1 = new MyClass ();
T1.start();

當run()方法執行時,它將打印出文本“ MyClass running”。
到目前爲止,我們僅使用了兩個線程:主線程和一個子線程。 但是,我們的程序可以影響所需數量的線程。 讓我們看看如何創建多個線程。

創建多個線程

class MyThread implements Runnable {
String name;
Thread t;
    MyThread String thread){
    name = threadname; 
    t = new Thread(this, name);
System.out.println("New thread: " + t);
t.start();
}
public void run() {
 try {
     for(int i = 5; i > 0; i--) {
     System.out.println(name + ": " + i);
      Thread.sleep(1000);
}
}catch (InterruptedException e) {
     System.out.println(name + "Interrupted");
}
     System.out.println(name + " exiting.");
}
}
class MultiThread {
public static void main(String args[]) {
     new MyThread("One");
     new MyThread("Two");
     new NewThread("Three");
try {
     Thread.sleep(10000);
} catch (InterruptedException e) {
      System.out.println("Main thread Interrupted");
}
      System.out.println("Main thread exiting.");
      }
}

該程序的輸出如下所示:

New thread: Thread[One,5,main]
New thread: Thread[Two,5,main]
New thread: Thread[Three,5,main]
One: 5
Two: 5
Three: 5
One: 4
Two: 4
Three: 4
One: 3
Three: 3
Two: 3
One: 2
Three: 2
Two: 2
One: 1
Three: 1
Two: 1
One exiting.
Two exiting.
Three exiting.
Main thread exiting.

這就是Java中的多線程工作方式。 希望這對你有所幫助。

喜歡這篇文章的可以點個贊,歡迎大家留言評論,記得關注我,每天持續更新技術乾貨、職場趣事、海量面試資料等等
如果你對java技術很感興趣也可以加入我的java學習羣 V–(ddmsiqi)來交流學習,裏面都是同行,驗證【CSDN2】有資源共享。
不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章