构造函数
无参构造函数
public Thread() {
init(null, null, "Thread-" + nextThreadNum(), 0);
}
nextThreadNum()是一个同步方法,从0开始计数
private static int threadInitNumber;
private static synchronized int nextThreadNum() {
return threadInitNumber++;
}
在这个过程中对threadId同样进行了类似的设置:
main的threadId为1,后续自建的线程ID都会较大(从8?开始),代码如下:
private static synchronized long nextThreadID() {
return ++threadSeqNumber;
}
多个有参构造方法中,参数比较有意思的是stackSize的大小,他可以指定线程的栈大小,与jvm的-xss,可以参考以下文章:
JAVA并发编程(四)之Thread StackSize_jalja的博客-CSDN博客
静态方法
Thread.activeCount()方法计算的是线程状态处于Runnable, Waiting,TImeWaiting三种状态的线程,另外的New,Terminated状态的不计入该值
异常
IllegalThreadStateException,同一个线程,先后两次调用start方法,会出现该异常。
调用了stop方法,再调用start也会出现IllegalThreadStateException,这个就要参考Thread的状态转移图: