多线程执行时为什么调用的是start()方法而不是run()方法
Thead类中start()方法和run()方法的区别
【多线程执行时为什么调用的是start()方法而不是run()方法】start()用来启动一个线程,当调用start()方法时,系统才会开启一个线程,通过Thead类中start()方法来启动的线程处于就绪状态(可运行状态),此时并没有运行,一旦得到CPU时间片,就自动开始执行run()方法。此时不需要等待run()方法执行完也可以继续执行下面的代码,也由此看出run()方法并没有实现多线程。
run()方法是在本线程里的,只是线程里的一个函数,而不是多线程的。如果直接调用run(),其实就相当于是调用了一个普通函数而已,直接待用run()方法必须等待run()方法执行完毕才能执行下面的代码,所以执行路径还是只有一条,根本就没有线程的特征,所以在多线程执行时要使用start()方法而不是run()方法。
总结
run()只是一个函数,并没有多线程的特征。Thead类中的Start()才是实现多线程的。
推荐阅读
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- 爱就是希望你好好活着
- 昨夜小楼听风
- 知识
- 死结。
- 我从来不做坏事
- 陇上秋二|陇上秋二 罗敷媚
- 烦恼和幸福
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式