-
启动新线程
-
准备工作
-
不能重复start()
-
启动新线程
-
加入线程组
-
调用start0()方法
不可以重复调用Start()方法是因为
private volatile int threadStatus = 0;
java中默认threadStatus为0
if (threadStatus != 0) throw new IllegalThreadStateException();
如果threadStatus不等于0,就会抛出IllegalThreadStateException异常
run()方法原理解读-
源码解析 代码如下
-
public void run() { if (target != null) { target.run(); } } -
两种情况
第一种:重写thread类中的run方法
第二种:传入target对象,判断target对象是否为空,不为空则调用run()方法
所以说,如果想真正的启动线程,不能直接调用run方法,而是要调用start方法间接的调用run方法(使用start方法会调用start0()方法,接着通过JVM进行资源调度,系统分配,回调run()方法执行线程的具体操作。如果直接调用run方法就相当于调用一个普通方法)



