多執行緒-獲取和設定執行緒物件名稱

ZHOU_VIP發表於2017-05-31

package cn.itcast_03;

public class MyThread extends Thread {

	public MyThread() {
	}
	
	public MyThread(String name){
		super(name);
	}

	@Override
	public void run() {
		for (int x = 0; x < 100; x++) {
			System.out.println(getName() + ":" + x);
		}
	}
}


package cn.itcast_03;

/*
 * 如何獲取執行緒物件的名稱呢?
 * public final String getName():獲取執行緒的名稱。
 * 如何設定執行緒物件的名稱呢?
 * public final void setName(String name):設定執行緒的名稱
 * 
 * 針對不是Thread類的子類中如何獲取執行緒物件名稱呢?
 * public static Thread currentThread():返回當前正在執行的執行緒物件
 * Thread.currentThread().getName()
 */
public class MyThreadDemo {
	public static void main(String[] args) {
		//建立執行緒物件
		//無參構造+setXxx()
		 MyThread my1 = new MyThread();
		 MyThread my2 = new MyThread();
		//呼叫方法設定名稱
		 my1.setName("林青霞");
		 my2.setName("劉意");
		 
		 my1.start();
		 my2.start();
		
		//帶參構造方法給執行緒起名字
		 MyThread my1 = new MyThread("林青霞");
		 MyThread my2 = new MyThread("劉意");
		 my1.start();
		 my2.start();
		
		//我要獲取main方法所在的執行緒物件的名稱,該怎麼辦呢?
		//遇到這種情況,Thread類提供了一個很好玩的方法:
		//public static Thread currentThread():返回當前正在執行的執行緒物件
		System.out.println(Thread.currentThread().getName());
	}
}

/*
名稱為什麼是:Thread-? 編號

class Thread {
	private char name[];

	public Thread() {
        init(null, null, "Thread-" + nextThreadNum(), 0);
    }
    
    private void init(ThreadGroup g, Runnable target, String name, long stackSize) {
        init(g, target, name, stackSize, null);
    }
    
     private void init(ThreadGroup g, Runnable target, String name, long stackSize, AccessControlContext acc) {
        //大部分程式碼被省略了
        this.name = name.toCharArray();
    }
    
    public final void setName(String name) {
        this.name = name.toCharArray();
    }
    
    
    private static int threadInitNumber; //0,1,2
    private static synchronized int nextThreadNum() {
        return threadInitNumber++; //return 0,1
    }
    
    public final String getName() {
        return String.valueOf(name);
    }
}

class MyThread extends Thread {
	public MyThread() {
		super();
	}
}

*/




相關文章