java多线程面试问题:为什么我们不能直接调用 run() 方法?


这是一个常见的面试问题:

new一个Thread,该线程进入了新建状态,调用start()方法,会启动一个线程并使该线程进入了就绪状态,当分配到时间片之后,该线程就可以运行了。

start()方法会执行线程的相应准备工作,然后自动执行run()方法的内容,是真正的创建了一个线程去执行任务。

直接运行run()方法,会把run()方法当成一个main线程下的普通方法去执行,并不会创建出一个新的线程去执行run()方法中写的任务。在main线程中调用run()方法后,要等run方法执行完毕后,才能继续执行接下来的方法,所以这不是一个真正的多线程工作。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM