在Java中,新建线程的生命周期可以分为以下几个阶段:
-
新建(New):当你使用
new Thread()
创建一个新的线程对象时,线程处于新建状态。此时,线程尚未开始执行。 -
可运行(Runnable):当你调用线程对象的
start()
方法时,线程进入可运行状态。这意味着线程已经准备好执行,但可能正在等待CPU资源。线程调度器会根据线程的优先级来决定哪个线程应该获得CPU资源。 -
阻塞(Blocked):当线程等待某个操作完成(例如等待锁、等待I/O操作完成等)时,线程进入阻塞状态。在这个状态下,线程不会执行任何操作,直到其等待的操作完成。
-
等待/休眠(Waiting/Sleeping):线程可以使用
wait()
、join()
或sleep()
方法进入等待/休眠状态。在等待状态下,线程会释放CPU资源,直到其他线程调用其notify()
或notifyAll()
方法。在休眠状态下,线程会暂停执行一段时间,然后自动恢复到可运行状态。 -
死亡(Terminated):当线程完成其执行任务或因为异常而终止时,线程进入死亡状态。一旦线程进入此状态,它将无法再次启动或恢复。
总结一下,Java新建线程的生命周期包括:新建 -> 可运行 -> 阻塞/等待/休眠 -> 死亡。