Java Thread 類



介紹

Java Thread 類是程式中的一條執行執行緒。Java 虛擬機器允許應用程式同時執行多條執行執行緒。以下是關於 Thread 的重要幾點:

  • 每個執行緒都有一個優先順序。優先順序較高的執行緒優先於優先順序較低的執行緒執行。

  • 每個執行緒也可以標記為守護執行緒或非守護執行緒。

  • 建立新執行執行緒有兩種方法。一種是宣告一個類作為 Thread 的子類,

  • 另一種建立執行緒的方法是宣告一個實現 Runnable 介面的類。

類宣告

以下是java.lang.Thread類的宣告:

public class Thread
   extends Object
      implements Runnable

欄位

以下是java.lang.Thread類的欄位:

  • static int MAX_PRIORITY - 這是執行緒可以具有的最大優先順序。

  • static int NORM_PRIORITY - 這是分配給執行緒的預設優先順序。

類建構函式

序號 建構函式及描述
1

Thread()

這將分配一個新的 Thread 物件。

2

Thread(Runnable target)

這將分配一個新的 Thread 物件。

3

Thread(Runnable target, String name)

這將分配一個新的 Thread 物件。

4

Thread(String name)

這將構造分配一個新的 Thread 物件。

5

Thread(ThreadGroup group, Runnable target)

這將分配一個新的 Thread 物件。

6

Thread(ThreadGroup group, Runnable target, String name)

這將分配一個新的 Thread 物件,使其具有 target 作為其執行物件,具有指定的 name 作為其名稱,並且屬於 group 引用的執行緒組。

7

Thread(ThreadGroup group, Runnable target, String name, long stackSize)

這將分配一個新的 Thread 物件,使其具有 target 作為其執行物件,具有指定的 name 作為其名稱,屬於 group 引用的執行緒組,並且具有指定的堆疊大小。

8

Thread(ThreadGroup group, String name)

這將分配一個新的 Thread 物件。

類方法

序號 方法及描述
1 static int activeCount()

此方法返回當前執行緒的執行緒組中活動執行緒的數量。

2 void checkAccess()

此方法確定當前執行的執行緒是否具有修改此執行緒的許可權。

3

protected Object clone()

如果此物件的類是 Cloneable,則此方法返回一個克隆。

4 static Thread currentThread()

此方法返回對當前正在執行的執行緒物件的引用。

5 static void dumpStack()

此方法將當前執行緒的堆疊跟蹤列印到標準錯誤流。

6 static int enumerate(Thread[] tarray)

此方法將當前執行緒的執行緒組及其子組中的每個活動執行緒複製到指定的陣列中。

7 static Map<Thread,StackTraceElement[]> getAllStackTraces()

此方法返回所有活動執行緒的堆疊跟蹤對映。

8 ClassLoader getContextClassLoader()

此方法返回此執行緒的上下文 ClassLoader。

9 static Thread.UncaughtExceptionHandler getDefaultUncaughtExceptionHandler()

此方法返回當執行緒由於未捕獲的異常而突然終止時呼叫的預設處理程式。

10 long getId()

此方法返回此執行緒的識別符號。

11 String getName()

此方法返回此執行緒的名稱。

12 int getPriority()

此方法返回此執行緒的優先順序。

13 StackTraceElement[] getStackTrace()

此方法返回一個堆疊跟蹤元素陣列,表示此執行緒的堆疊轉儲。

14 Thread.State getState()

此方法返回此執行緒的狀態。

15 ThreadGroup getThreadGroup()

此方法返回此執行緒所屬的執行緒組。

16 Thread.UncaughtExceptionHandler getUncaughtExceptionHandler()

此方法返回當此執行緒由於未捕獲的異常而突然終止時呼叫的處理程式。

17 static boolean holdsLock(Object obj)

此方法僅當且僅當當前執行緒持有指定物件的監視器鎖時返回 true。

18 void interrupt()

此方法中斷此執行緒。

19 static boolean interrupted()

此方法測試當前執行緒是否已被中斷。

20 boolean isAlive()

此方法測試此執行緒是否處於活動狀態。

21 boolean isDaemon()

此方法測試此執行緒是否是守護執行緒。

22 boolean isInterrupted()

此方法測試此執行緒是否已被中斷。

23 void join()

等待此執行緒死亡。

24 void join(long millis)

最多等待 millis 毫秒,等待此執行緒死亡。

25 void join(long millis, int nanos)

最多等待 millis 毫秒加上 nanos 納秒,等待此執行緒死亡。

26 void run()

如果使用單獨的 Runnable run 物件構造此執行緒,則呼叫該 Runnable 物件的 run 方法;否則,此方法不執行任何操作並返回。

27 void setContextClassLoader(ClassLoader cl)

此方法設定此執行緒的上下文 ClassLoader。

28 void setDaemon(boolean on)

此方法將此執行緒標記為守護執行緒或使用者執行緒。

29 static void setDefaultUncaughtExceptionHandler (Thread.UncaughtExceptionHandler eh)

此方法設定當執行緒由於未捕獲的異常而突然終止且未為該執行緒定義其他處理程式時呼叫的預設處理程式。

30 void setName(String name)

此方法將此執行緒的名稱更改為等於引數名稱。

31 void setPriority(int newPriority)

此方法更改此執行緒的優先順序。

32 void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)

此方法設定當此執行緒由於未捕獲的異常而突然終止時呼叫的處理程式。

33 static void sleep(long millis)

此方法導致當前執行的執行緒休眠(暫時停止執行)指定的毫秒數,受系統計時器和排程程式的精度和準確性的影響。

34 static void sleep(long millis, int nanos)

此方法導致當前執行的執行緒休眠(停止執行)指定的毫秒數加上指定的納秒數,受系統計時器和排程程式的精度和準確性的影響。

35 void start()

此方法導致此執行緒開始執行;Java 虛擬機器呼叫此執行緒的 run 方法。

36 String toString()

此方法返回此執行緒的字串表示形式,包括執行緒的名稱、優先順序和執行緒組。

37 static void yield()

此方法導致當前執行的執行緒物件暫時暫停並允許其他執行緒執行。

繼承的方法

此類繼承自以下類的方法:

  • java.lang.Object

示例:在多執行緒程式中獲取當前執行緒

以下示例顯示了 Java Thread currentThread() 方法的用法。在此示例中,我們透過實現 Runnable 介面建立了一個執行緒類 ThreadDemo。在 ThreadDemo 建構函式中,使用 currentThread 方法檢索當前活動的執行緒,並建立新執行緒,然後列印兩者。

package com.tutorialspoint;

public class ThreadDemo implements Runnable {

   ThreadDemo() {
      // main thread
      Thread currThread = Thread.currentThread();
      
      // thread created
      Thread t = new Thread(this, "Admin Thread");
   
      System.out.println("current thread = " + currThread);
      System.out.println("thread created = " + t);
      
      // this will call run() function
      t.start();
   }

   public void run() {
      System.out.println("This is run() method");
   }

   public static void main(String args[]) {
      new ThreadDemo();
   }
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

current thread = Thread[main,5,main]
thread created = Thread[Admin Thread,5,main]
This is run() method
廣告