線程對象也是從一個(線程)類而構建的,線程類作爲一個類也可以擁有自己的私有成員。這個成員爲此線程對象私有,有時候使用線程私有變量,會巧妙避免一些併發安全的問題,提高程序的靈活性和編碼的複雜度。
下面舉例來說吧,統計一個線程類創建過多少個線程,併爲每個線程進行編號。
/**
* 爲線程添加編號,並確所創建過線程的數目
*
* @author SWPU 2019-12-24 16:38:31
*/
public class ThreadVarTest {
public static void main(String[] args) {
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class MyThread extends Thread {
private static int sn = 0; //線程數
private int x = 0; //線程編號
MyThread() {
x = sn++;
}
@Override
public void run() {
Thread t = Thread.currentThread();
System.out.println(t.getName() + "\t" + x);
}
}
運行結果
Thread-0 0
Thread-1 1
Thread-2 2
Thread-3 3