启动线程的正确和错误方式
start和run的比较
public class StartAndRunMethod {
public static void main(String[] args) {
Runnable runnable = () -> {
System.out.println(Thread.currentThread().getName());
};
runnable.run();
new Thread(runnable).start();
}
}
//main
//Thread-0
start方法
- 启动新线程
- 告诉JVM,合适的时候启动
- start牵扯到两个线程,一个是主线程,一个是子线程
- 准备工作
- 所有资源,除了CPU
- 不能重复start
步骤
- 启动新县城检查线程状态
- 加入线程组
- 执行"start0" Native方法
run方法
@Override
public void run() {
if (target != null) { // target is a implement of Runnable
target.run();
}
}