问题

你什么时候打电话给Java'sthread.run()而不是thread.start()


#1 热门回答(109 赞)

你可能希望在特定单元测试中调用run(),该测试严格关注功能而不是并发。


#2 热门回答(93 赞)

决不。直接调用run()只是同步执行代码(在同一个线程中),就像普通的方法调用一样。


#3 热门回答(27 赞)

采取形式Code Style Java threads FAQ

问:线程的start()和run()方法有什么区别?答:Thread类中的单独start()和run()方法提供了两种创建线程程序的方法。 start()方法开始执行新线程并调用run()方法。 start()方法立即返回,新线程通常会继续,直到run()方法返回。 Thread类的run()方法不执行任何操作,因此子类应该使用代码覆盖该方法以在第二个线程中执行。如果使用Runnable参数实例化Thread,则线程的run()方法将在新线程中执行Runnable对象的run()方法。根据线程程序的性质,直接调用Thread run()方法可以提供与通过start()方法调用相同的输出,但在后一种情况下,代码实际上是在新线程中执行的。


原文链接