调用start()时开启线程,当该线程获取执行资源后就开始执行run方法;就是多线程会竞争资源,谁获得资源谁就执行,就是运行run方法
源码分析:
publish class Thread implements Runnable {
private Runnable target;
public synchronized void start() {
.
.
//调用本地方法,本地方式负责创建线程及回调run方法
nativeCreate(this, stackSize, daemon);
.
.
}
/**
*该方法没有明确的java代码回调痕迹,是在本地方法
* nativeCreate(this, stackSize, daemon)中调用的
*/
@Override
publish void run() {
if (target != null) {
target.run();
}
}
}
Thread对象调用 start方法后,自动调用