Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 雜項

Java API 與框架

Java 類參考

Java 有用資源

Java - 主執行緒



Java 中的主執行緒

每當我們執行 Java 程式時,都會自動建立主執行緒。此執行緒負責執行 Java 程式。Java 執行時搜尋 main 方法以執行並基於它建立主執行緒。如果我們建立多個執行緒,則所有子執行緒都將從主執行緒生成。此主執行緒是第一個建立的執行緒,通常也是最後一個執行緒,它用於執行關閉任務。

如何控制主執行緒?

程式啟動時,JVM 會自動建立主執行緒。但是,您可以使用不同的 Thread 方法和技術來控制主執行緒。

以下是一些控制主執行緒的方法。

Java 主執行緒示例

在此示例中,我們展示了一個簡單的單執行緒程式,其中我們沒有宣告任何執行緒並在程式執行中檢查執行緒名稱。

package com.tutorialspoint;
public class TestThread {
   public void printName() {
	   System.out.println("Thread Name: " + Thread.currentThread().getName());
	   System.out.println("Thread Priority: " +Thread.currentThread().getPriority());
   }	
   public static void main(String args[]) {
	   TestThread thread = new TestThread();
	   thread.printName();	   
   }
}

輸出

Thread Name: main
Thread Priority: 5

主執行緒的更多示例

示例

在此示例中,我們建立了一個 ThreadDemo 類,它擴充套件了 Thread 類。我們沒有向 Thread 傳遞任何名稱,它將列印系統分配給執行緒的預設名稱。在 main 方法中,我們建立了兩個執行緒。在輸出中,您可以檢查,當前執行緒名稱列印為 main,而執行緒是使用 constructor() 方法呼叫建立的。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
   }
   public void run() {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
   public void start () {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
	  ThreadDemo thread1 = new ThreadDemo();
	  ThreadDemo thread2 = new ThreadDemo();
	  thread1.start();
	  thread2.start();
   }
}

輸出

Thread: main, State: New
Thread: main, State: New
Thread: main, State: Start
Thread: main, State: Start
Thread: Thread-0, State: Running
Thread: Thread-0, 4
Thread: Thread-0, 3
Thread: Thread-1, State: Running
Thread: Thread-1, 4
Thread: Thread-0, 2
Thread: Thread-1, 3
Thread: Thread-0, 1
Thread: Thread-1, 2
Thread: Thread-0, State: Dead
Thread: Thread-1, 1
Thread: Thread-1, State: Dead

示例 2

在此示例中,我們建立了一個 ThreadDemo 類,它擴充套件了 Thread 類。我們沒有向 Thread 傳遞任何名稱,它將列印系統分配給執行緒的預設名稱。在 main 方法中,我們建立了兩個執行緒。在輸出中,您可以檢查,當前執行緒名稱列印為 main,而執行緒是使用 constructor() 方法呼叫建立的。在 main 方法的末尾,我們列印主執行緒的狀態。

package com.tutorialspoint;
class ThreadDemo extends Thread {
   ThreadDemo( ) {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: New");
   }
   public void run() {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
      for(int i = 4; i > 0; i--) {
         System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i); 
      }
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
   public void start () {
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
      super.start();
   }
}
public class TestThread {
   public static void main(String args[]) {
	  ThreadDemo thread1 = new ThreadDemo();
	  ThreadDemo thread2 = new ThreadDemo();
	  thread1.start();
	  thread2.start();
      System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
   }
}

輸出

Thread: main, State: New
Thread: main, State: New
Thread: main, State: Start
Thread: main, State: Start
Thread: Thread-0, State: Running
Thread: main, State: Dead
Thread: Thread-1, State: Running
Thread: Thread-0, 4
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-1, 1
Thread: Thread-1, State: Dead
Thread: Thread-0, 3
Thread: Thread-0, 2
Thread: Thread-0, 1
Thread: Thread-0, State: Dead

在此輸出中,您可以檢查主執行緒在早期階段已完成,但執行緒仍在執行並完成了它們的執行。

廣告