前面學習了線程的實現,接下來看看線程的常用操作方法。
1.線程的命名和取得。
在Thread類中提供了以下方法實現線程名稱的操作
.構造方法:public Thread(ThreadGroup group, Runnable target, String name) .設置名字:public final void setName(String name) .取得名字: public final String getName()
線程的執行狀態本身是不確定的狀態,所以如果要取得線程的名字的話,唯一能做的是取得當前執行的線程的名字,Thread類裏提供了這樣的方法。
public static Thread currentThread()
範例:
class MyThread implements Runnable { @Override public void run() { System.out.println("MyThread線程類: " + Thread.currentThread().getName()); } } public class test { public static void main(String[] args) throws Exception { MyThread mt = new MyThread(); new Thread(mt).start();//線程啓動調用run() -->輸出:MyThread線程類: Thread-0 mt.run();//直接調用run() -->輸出MyThread線程類: main } }
線程一定依附於進程存在的。java命令在jvm上解釋某個程序執行的時候,默認都會執行一個jvm的進程,而主方法只是進程中的一個線程。整個程序一直都跑在線程的運行機制上。
每一個jvm至少會啓動兩個線程:主線程,GC線程。
2.線程的休眠
休眠方法:public static void sleep(long millis) throws InterruptedException
millis
- 以毫秒爲單位的休眠時間。
InterruptedException -中斷異常,休眠時間沒有到,線程就被中斷了,拋出此異常。此異常非RuntimeException異常,需要處理。
線程的休眠是有先後順序的。
3.線程的優先級。
設置線程優先級:public final void setPriority(int newPriority)
獲取線程優先級:public final int getPriority()
優先級的定義一共有三種:
線程的最高優先級:public static final int MAX_PRIORITY
線程最低優先級:public static final int MIN_PRIORITY
線程的中等優先級:public static final int NORM_PRIORITY
理論上線程的優先級越高越有可能先執行。