首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

[JAVA100例] 第62例:多線程創建與啟動基礎實例

     編輯:Java 相關知識

本例演示最基礎的多線程創建模式:主線程循環創建 5 個子線程,每個線程通過構造器參數區分身份,運行短暫任務後結束。

核心代碼

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

  multiThread() {
    for (int i = 0; i < 5; i++) {
      System.out.println("Creating thread " + i);
      innThread mt = new innThread(i);
      mt.start();  // 啟動線程,異步執行 run()
    }
  }

  class innThread extends Thread {
    int count;
    innThread(int i) { count = i; }
    public void run() {
      System.out.println("now " + count + " thread is beginning..... ");
      try { sleep(10 - count); } catch (Exception e) { System.out.println(e); }
      System.out.println("\n" + count + " thread is end!");
    }
  }
}

關鍵要點

  1. 繼承 Thread:定義子類覆寫 run() 作為線程執行體
  2. start() vs run():start() 創建新線程並調用 run();直接調用 run() 只在當前線程同步執行
  3. 構造器傳參:通過構造器將區分參數傳入線程對象
  4. 異步並發:5 個線程近乎同時啟動,輸出順序不確定(受調度器影響)
  5. 線程命名:建議 super("名稱") 或 setName() 便於調試

現代改進寫法

// 1. Lambda + Thread(Java 8+)
for (int i = 0; i < 5; i++) {
  final int id = i;
  new Thread(() -> {
    System.out.println("Thread " + id + " starting");
    try { Thread.sleep(10 - id); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
    System.out.println("Thread " + id + " ended");
  }, "Worker-" + id).start();
}

// 2. ExecutorService(生產環境推薦)
ExecutorService pool = Executors.newFixedThreadPool(5);
for (int i = 0; i < 5; i++) {
  final int id = i;
  pool.submit(() -> {
    System.out.println("Thread " + id + " starting");
    try { Thread.sleep(10 - id); } catch (InterruptedException e) { Thread.currentThread().interrupt(); }
    System.out.println("Thread " + id + " ended");
  });
}
pool.shutdown();

ExecutorService 優勢

  • 線程復用,避免頻繁創建銷毀開銷
  • 有界隊列防止任務堆積 OOM
  • 統一生命週期管理(shutdown/awaitTermination)
  • 支援 Future/CompletionStage 獲取結果
  • 可監控指標(activeCount、queueSize、completedTaskCount)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved