創建線程
創建一個線程有兩種方法:
- 通過擴展
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.yiibai;
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.yiibai;
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()
方法可以執行。