启动线程
run方法与start方法比较
- 直接调用
run()
方法并未开启新的线程,而是在主线程中被当作一个普通的方法进行调用
- 调用
start()
方法开启新的线程,由新线程调用run()
方法
public static void main(String[] args) {
Thread thread = new Thread(() -> System.out.println("当前线程正在执行:" + Thread.currentThread().getName()));
thread.run();
thread.start();
}
start方法含义
- 请求JVM在空闲时启动新线程
- 调用start方法的顺序并非线程的执行顺序,线程的执行顺序由线程调度器决定
- 新线程一定由父线程创建
- 启动后让新线程处于就绪状态,也就是获取到了除CPU之外的其他资源
- 当获取到CPU资源后进入运行状态
- 不能重复的调用start方法,若启动多次会抛出
IllegalThreadStateException
非法线程状态异常
start方法源码分析
- 首先检查该线程状态,若状态是已启动状态则会抛出
IllegalThreadStateException
非法线程状态异常
- 加入线程组
- 调用
sart0()
这个本地方法
Comments NOTHING