1. 程式人生 > >Java學習筆記之--------執行緒基本資訊

Java學習筆記之--------執行緒基本資訊

執行緒常用的幾個方法如下:

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();

    }
}

執行結果如下圖所示:

這裡寫圖片描述

可以看出,兩個執行緒執行的頻率是相差不多的,此時兩個執行緒的優先順序都是預設的優先順序。如果將上面設定優先順序的兩行程式碼的註釋解開,則執行結果如下圖:

這裡寫圖片描述

可以看出,優先順序較高的第二個執行緒執行的頻率高於第一個執行緒。