本文主要是介绍面试题:线程的run()和start()有什么区别?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Java中,线程的run()
和start()
方法有着本质的不同:
-
run()方法:这是线程要执行的任务代码所在的方法。当你重写
Thread
类或实现Runnable
接口时,你需要提供一个run()
方法的实现,该方法包含了线程执行的具体逻辑。直接调用run()
方法就像调用一个普通的Java方法一样,它会在当前线程中顺序执行,而不会创建新线程。这意味着调用run()
时,程序的执行仍然是单线程的,不会实现并发。 -
start()方法:当你创建了一个线程对象后,需要通过调用它的
start()
方法来启动这个线程。start()
方法的作用是安排线程在Java虚拟机中开始执行,它会启动一个新线程,并由JVM负责调用该线程的run()
方法。调用start()
后,线程进入就绪状态,等待CPU分配时间片来实际执行run()
方法中的代码。因此,start()
不仅启动了一个新线程,还确保了线程的并发执行。
总结来说,run()
方法包含了线程要执行的任务,而start()
方法则是用来启动一个新线程并使线程能够调度执行run()
方法。直接调用run()
不会创建新线程,而调用start()
才会真正实现多线程并发。
这篇关于面试题:线程的run()和start()有什么区别?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!