創建一個線程有兩種方法:
- 通過擴展
Thread類。 - 通過實現
Runnable介面。
Thread類Thread類提供了線上程上創建和執行操作的構造函數和方法。Thread類擴展了Object類並實現了Runnable介面。
常用的Thread類構造函數
Thread()Thread(String name)Thread(Runnable r)Thread(Runnable r,String name)
Thread類的常用方法:
public void run(): 用於執行線程的操作。public void start(): 開始執行線程,JVM調用線程上的run()方法。public void sleep(long miliseconds): 使當前正在執行的線程休眠(暫時停止執行)達指定的毫秒數。public void join(): 等待線程死亡。public void join(long miliseconds): 按指定的毫秒數等待線程死亡。public int getPriority(): 返回線程的優先順序。public int setPriority(int priority): 更改線程的優先順序。public String getName(): 返回線程的名稱。public void setName(String name): 更改線程的名稱。public int getId():返回線程的編號(ID)。public Thread.State getState(): 返回線程的狀態。public boolean isAlive(): 測試線程是否處於活動狀態。public void yield(): 使當前正在執行的線程對象暫時暫停並允許其他線程執行。public void suspend(): 用於掛起線程(depricated)。public void resume(): 用於恢復掛起的線程(depricated)。public void stop(): 用於停止線程(depricated)。public boolean isDaemon(): 測試該線程是否為守護進程線程。public void setDaemon(boolean b): 將線程標記為守護進程或用戶線程。public void interrupt(): 中斷線程。public boolean isInterrupted(): 測試線程是否被中斷。public static boolean interrupted(): 測試當前線程是否已被中斷。
Runnable介面:Runnable介面應由任何其實例由線程執行類實現。Runnable介面只有一個run()方法。
public void run(): 用於執行線程的操作。
啟動線程:
Thread類的start()方法用於啟動新創建的線程。它執行以下任務:
- 一個新線程啟動(使用新的callstack)。
- 線程從
New狀態移動到Runnable狀態。 - 當線程有機會執行時,它的目標
run()方法將運行。
示例
1. 通過擴展Thread類線程示例
package com.zaixian;
class Multi extends Thread {
public void run() {
System.out.println("thread is running...");
}
public static void main(String args[]) {
Multi t1 = new Multi();
t1.start();
}
}
執行上面示例代碼,得到以下結果:
thread is running...
2. 通過實現Runnable介面的線程示例
package com.zaixian;
class Multi implements Runnable {
public void run() {
System.out.println("thread is running...");
}
public static void main(String args[]) {
Multi m1 = new Multi();
Thread t1 = new Thread(m1);
t1.start();
}
}
執行上面示例代碼,得到以下結果:
thread is running...
如果沒有擴展Thread類,類對象就不會被視為一個線程對象。所以需要明確地創建Thread類對象。傳遞實現Runnable類的對象,以便類的run()方法可以執行。
上一篇:
線程的生命週期(線程狀態)
下一篇:
Java線程調度程式
