Java學習筆記之--------執行緒基本資訊
阿新 • • 發佈:2018-12-10
執行緒常用的幾個方法如下:
isAlive() :測試執行緒是否處於活動狀態。 setName(String name) :改變執行緒名稱,使之與引數 name 相同。 getName() :返回該執行緒的名稱。 setPriority(int newPriority) :更改執行緒的優先順序。 getPriority() :返回執行緒的優先順序。 currentThread() :返回對當前正在執行的執行緒物件的引用。
方法的使用的示例如下:
public class MyThread implements Runnable {
private boolean flag = true ;
private int num = 0;
@Override
public void run() {
while (flag) {
System.out.println(Thread.currentThread().getName()+"-->"+num++);
}
}
public void stop(){
this.flag =! this.flag;
}
}
public class InfoDemo01 {
public static void main(String[] args) throws InterruptedException {
MyThread t1 = new MyThread();
//設定執行緒名字的一種實現
Thread proxy = new Thread(t1,"第一個執行緒");
System.out.println(proxy.getName());
//使用setName()來給執行緒設定名字
proxy.setName("test");
System.out.println(proxy.getName());
//獲取當前執行緒的名字
System.out.println(Thread.currentThread().getName());
proxy.start();
System.out.println("啟動後的狀態:"+proxy.isAlive());
Thread.sleep(20);
t1.stop();
Thread.sleep(100);
System.out.println("停止後的狀態:"+proxy.isAlive());
}
}
執行結果如下圖:
由執行結果圖我們可以看出,t1的名字為“第一個執行緒”,然後使用setName()將名字修改為了test。用getName()獲取當前執行緒的名字。線上程啟動後,isAlive()方法返回的是true,線上程停止後,返回的是false。
有關執行緒優先順序, MAX_PRIORITY:執行緒可以具有的最高優先順序。預設為10。 MIN_PRIORITY:執行緒可以具有的最低優先順序。預設為1。 NORM_PRIORITY:分配給執行緒的預設優先順序。預設為5。 示例如下:
public class InfoDemo02 {
public static void main(String[] args) throws InterruptedException {
MyThread t1 = new MyThread();
Thread p1 = new Thread(t1,"第一個執行緒");
MyThread t2 = new MyThread();
Thread p2 = new Thread(t1,"ceshi第二個執行緒");
//設定優先順序
//p1.setPriority(Thread.MIN_PRIORITY);
//p2.setPriority(Thread.MAX_PRIORITY);
p1.start();
p2.start();
Thread.sleep(10);
t1.stop();
t2.stop();
}
}
執行結果如下圖所示:
可以看出,兩個執行緒執行的頻率是相差不多的,此時兩個執行緒的優先順序都是預設的優先順序。如果將上面設定優先順序的兩行程式碼的註釋解開,則執行結果如下圖:
可以看出,優先順序較高的第二個執行緒執行的頻率高於第一個執行緒。