线程中所有状态都在Thread的State枚举类中定义

public enum State {
        NEW,        //表示刚刚创建的线程,尚未启动的状态,等待start()方法的调用
        RUNNABLE,    //线程执行时,start()执行
        BLOCKED,    //线程执行时,遇到synchronized同步块/方法后,暂停执行
        WAITING,        //调用了wait(),join(),LockSupport.park()
                        //或者在等待另一个线程中调用notify()或notifyall()

        TIMED_WAITING,    //指定等待时间的等待线程状态
        TERMINATED;    //线程完成执行,表示结束
}

WAITING与TIMED_WAITING的区别

TIMED_WAITING会进行一个有时间限制的等待。

WAITING会进入到一个无时间限制的等待,等待的是一些特殊的事件;

比如通过wait()方法等待的线程在等待着notify()方法;

比如通过join()方法等待的线程则会等待目标线程的终止。

new Thread() → NEW → start() → RUNNABLE → TERMINATED

RUNNABLE → synchronized() → BLOCKED → synchronized代码块执行完毕 → RUNNABLE

RUNNABLE → wait() / join() ... → WAITING / TIME_WAITING → notify() → RUNNABLE

NEW状态不能NEW状态,TERMINATED状态也不能回到RUNNABLE状态。

results matching ""

    No results matching ""