这是个简单的问题,我们可以在代码中自己去重写一个Thread的run方法,然后去调用,发现如果使用 .run()的方式,然后打印当前线程会发现,仍然是主线程在执行,而如果是应start方法调用的话,才会新建一个子线程执行。
我们在从源码层面查看一下:
image.png
image.png
image.png
从源码层面我们可以看到使用start方法的时候,程序是新建了一个子线程,然后再调用虚拟机,执行线程的方法。
接下来我们总结一下:
image.png
这是个简单的问题,我们可以在代码中自己去重写一个Thread的run方法,然后去调用,发现如果使用 .run()的方式,然后打印当前线程会发现,仍然是主线程在执行,而如果是应start方法调用的话,才会新建一个子线程执行。
我们在从源码层面查看一下:
image.png
image.png
image.png
从源码层面我们可以看到使用start方法的时候,程序是新建了一个子线程,然后再调用虚拟机,执行线程的方法。
接下来我们总结一下:
image.png
本文标题:java 多线程2-线程中start与run的区别
本文链接:https://www.haomeiwen.com/subject/futkfltx.html
网友评论