调用 start() 方法会告诉JVM创建一个新的线程,并在这个新线程中执行与 run() 方法相关联的代码块。这个过程允许多个线程同时运行,每个线程都拥有独立的执行上下文,这意味着它们可以在不互相干扰的情况下执行任务。
与此不同,如果直接调用 run() 方法,它仅仅是一个普通的方法调用,不会创建新的线程。相反,它会在当前线程的上下文中执行 run() 方法中的代码。这将导致代码的顺序执行,没有并行性可言,因为它们都在同一个线程内执行。
这种区别非常重要,因为多线程编程的一个主要目标是实现并行性,从而提高程序的性能和响应能力。通过调用 start() 方法,可以利用多核处理器的优势,同时执行多个线程,以更有效地完成任务。而直接调用 run() 方法只是按照一般的方法顺序执行代码,无法发挥多线程的潜力。因此,使用 start() 方法来启动线程是实现并行性的关键。
![](/images/780-200-2.jpg)