创建Thread类,重写run方法,执行start方法后什么时候会执行run方法?

81 阅读1分钟

创建Thread类,重写run方法,执行start方法后什么时候会执行run方法?

当您通过new Thread()创建了一个Thread对象,并调用了该线程对象的start()`方法时,Java虚拟机会执行以下步骤:

1.新线程进入就绪状态start()方法的调用标志着新线程已经准备好执行,但它还没有开始执行。此时,线程被加入到线程调度器的可执行队列中,等待CPU时间片。

2.线程调度:操作系统或JVM的线程调度器会根据其调度策略(如抢占式或协作式),选择下一个要运行的线程。一旦新线程获得CPU时间片,它就开始执行。

3.执行run()方法:新线程获得执行权后,它的第一个操作就是调用之前传入的Runnable对象的run()方法。这意味着run()方法内部定义的代码现在开始执行。

简而言之,当你调用start()方法时,你并不是直接启动run()方法的执行,而是通知JVM这个新线程已经准备好运行,JVM随后在适当的时候(即线程被调度到时)调用run()方法。这样设计允许Java的线程模型更好地与操作系统交互,实现线程的管理和调度。