从start源码——理解线程

 1 public synchronized void start(){
 2         if(threadStatus!=0)
 3             throw new IllegalThreadStateException();
 4         group.add(this);
 5         boolean started=false;
 6         try{
 7             start0();
 8             started=true;
 9         }finally{
10             try{
11                 if(!started){
12                     group.theadStartFailed(this);
13                 }
14             }catch(Throwable ignore){
15                 
16             }
17         }
18     }

仔细阅读start的源码将会总结出如下几个知识点。

  • Thread被构造后的NEW状态,事实上threadStatus这个内部属性为0。
  • 不能两次启动Thread,否则就会出现IllegalThreadStateException异常。
  • 线程启动后将会被加入到一个ThreadGroup中
  • 一个线程生命周期结束,也就是到了TERMINATED状态,再次调用start方法是不允许的,也就是说TERMINATED状态是没有办法回到RUNNABLE/RUNNING状态的
原文地址:https://www.cnblogs.com/treeleaf/p/10830614.html