启动线程时 start 和 run 的区别

每个线程都有要执行的任务,线程的任务逻辑可以在 Thread 类的 run 方法中直接实现或通过该方法调用,因此

run() 相当于线程任务的入口,它由 Java 虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用

而 start 的作用是启动相应线程。启动一个线程实际是请求 Java 虚拟机运行相应的线程,而这个线程何时能够运行是由线程调度器决定的。

start() 调用结束并不表示相应线程已经开始运行,这个线程可能稍后运行,也可能永远不会运行

run() 方法只是 Thread 类下面的一个普通方法,如果直接调用只是会在当前线程内运行而已,并不会创建新的线程。而 start() 方法则是直接创建了一个新的线程并将需要执行的内容填充进去。也就是说 start() 方法才是多线程直接相关的

参考:https://blog.csdn.net/Done_FollowMyHeart/article/details/81542838

https://www.cnblogs.com/yiRain1992/p/9079989.html

-----------本文结束感谢您的阅读-----------
0%