Java线程的生命周期包括几个不同的状态,线程可以在这些状态之间转换。Java线程的状态转换通常由线程自身的行为和调度器(scheduler)的决定来触发。以下是Java线程的生命周期及其状态转换:
start()方法时,线程处于新建状态。start()方法被调用后,线程进入就绪状态。此时,线程已经准备好运行,等待被调度器选中并分配CPU资源。Object.wait()、Thread.join()或LockSupport.park()等方法。在等待状态的线程不会执行任何指令,直到另一个线程执行了相应的通知方法(如Object.notify()或Object.notifyAll())。wait()、join()方法,或者使用了ScheduledExecutorService等。计时等待状态的线程会在指定的时间等待,之后会转换为就绪状态。run()方法执行完成后,线程进入终止状态。一旦线程进入终止状态,它就不能被重新启动。start()方法。wait()方法。wait()或join()方法。notify()/notifyAll()唤醒。notify()/notifyAll()唤醒,并且run()方法执行完成。