public Thread()
public Thread(Runnable target)
public Thread(String name)
public Thread(Runnable target, String name)
public Thread(ThreadGroup group, Runnable target)
public Thread(ThreadGroup group, String name)
public Thread(ThreadGroup group, Runnable target, String name)
public Thread(ThreadGroup group, Runnable target, String name, long stackSize)
target:實作 Runnable 的任務物件(Thread 本身也實作 Runnable)。name:執行緒名稱,預設 Thread-N。group:執行緒群組,便於批量管理。stackSize:堆疊大小(平台相關,通常為 4KB 倍數)。Thread。run() 放入執行邏輯。start()(不是 run())。
package mythread;
public class ThreadDemo extends Thread {
@Override
public void run() {
System.out.println(getName());
}
public static void main(String[] args) {
System.out.println(Thread.currentThread().getName()); // main
new ThreadDemo().start(); // Thread-0
new ThreadDemo().start(); // Thread-1
}
}
public class NamedThread extends Thread {
private String who;
public NamedThread(String who) { this.who = who; }
public NamedThread(String who, String name) { super(name); this.who = who; }
@Override public void run() { System.out.println(who + ":" + getName()); }
public static void main(String[] args) {
new NamedThread("T1", "MyThread-1").start();
Thread t2 = new NamedThread("T2");
t2.setName("MyThread-2"); t2.start();
new NamedThread("T3").start(); // 預設 Thread-1
}
}
輸出:
T1:MyThread-1
T2:MyThread-2
T3:Thread-1
start() 不可呼叫兩次,否則拋 IllegalThreadStateException。setName() 在 start() 後呼叫有競態風險,建議建構時指定。main,任何 Java 程式至少有一條主執行緒。| 維度 | 繼承 Thread | 實作 Runnable |
|---|---|---|
| 繼承限制 | 佔用單一繼承 | 無限制 |
| 任務與執行緒耦合 | 強耦合 | 解耦,可投入執行緒池 |
| 共享任務實例 | 困難 | 容易 |
| 建議場景 | 簡單測試、教學 | 生產環境、配合 ExecutorService |