1. 程式人生 > >Java執行緒的命名與取得當前執行緒資訊

Java執行緒的命名與取得當前執行緒資訊

執行緒的命名:

public Thread(Runnable target,String name);
使用:new Thread(物件的引用,“執行緒名”).start();
public final synchronized void setName(String name);
使用:Thread.currentThread.setName(“執行緒名”)

執行緒資訊的取得

public static native Thread currentThread();
使用:Thread.currentThread();//取得當前執行緒的所有資訊
public final String getName();
使用:Thread.currentThread.getName();//取得當前執行緒的物件

注: native指的是告訴編譯器該方法是本地方法,不是用java編寫的是用其他語言寫的(一般是c/c++)。說明這個方法是原生函式,被編寫在DLL(動態連結函式)中,Java使用時會自動去作業系統中呼叫。

舉例:

class MyThread implements Runnable {
    @Override
    public synchronized void run() {
        System.out.println("當前執行緒" + Thread.currentThread());
        System.out.println("執行緒名稱" + Thread.currentThread().getName());
        System.out.println("執行緒ID:"+Thread.currentThread().getId());
        System.out.println("執行緒優先順序"+Thread.currentThread().getPriority());
    }
}

class Test{
    public static void main(String[] args){
        MyThread myThread = new MyThread();
        new Thread(myThread).start();
        new Thread(myThread).start();
        new Thread(myThread,"abaka").start();
        Thread thread = new Thread(myThread);
        thread.setName("abaka2");
        thread.start();
    }
}

結果:

當前執行緒Thread[Thread-0,5,main]
執行緒名稱Thread-0
執行緒ID:11
執行緒優先順序5
當前執行緒Thread[Thread-1,5,main]
執行緒名稱Thread-1
執行緒ID:12
執行緒優先順序5
當前執行緒Thread[abaka,5,main]
執行緒名稱abaka
執行緒ID:13
執行緒優先順序5
當前執行緒Thread[abaka2,5,main]
執行緒名稱abaka2
執行緒ID:14
執行緒優先順序5

注: 當沒有為執行緒命名時,執行緒預設從Thread-0開始。