作为一名Java开发者,在多线程编程的入门阶段,很多人都会遇到一个经典问题:Thread.start() 和 Thread.run() 看起来都能执行我们定义的任务,但它们到底有什么区别?为什么官方文档强调要用 start() 方法来启动线程?
本文将用一个极其生动的比喻,带你彻底弄懂这两者的本质区别,让你从此不再混淆。
一、一个经典的“做饭与玩手机”比喻
想象一个场景:你想吃饭,同时还想玩手机。你有两种选择:
-
选择一(错误示范):自己亲自去厨房,洗菜、切菜、炒菜。在整个做饭的20分钟里,你的双手被占用,完全没办法碰手机。直到你把饭端到桌上,才能开始玩手机。
-
这,就是直接调用
run()方法。
-
-
选择二(正确做法):打开手机APP叫一份外卖。你只花了1分钟点餐,然后就可以立刻往沙发上一躺,开心地玩19分钟手机。外卖员会在后台独立完成取餐、送餐的过程,饭好了自然会送到你手上。
-
这,就是调用
start()方法。
-
看到这里,你已经直观地感受到了两者的巨大差异。下面我们从技术层面深入剖析。
二、技术本质:什么是start()和run()?
-
run()方法: 它只是一个普通的方法。

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



