多线程基础之线程的生命周期

一个java线程从启动到结束运行,可能经历若干状态。

    

    NEW:一个已创建而未启动的线程处于该状态,由于一个线程只启动一次,所以只有一次处于该状态。

    RUNNABLE:该状态是一个复合状态。包括READY和RUNNING。前者表示该线程处于可以被线程调度器调度成RUNNING状态。后者表示该线程的run方法正在被

  jvm虚拟机调用,通过yeild方法可以变为READY状态。

    BLOCKED:一个线程发起一个阻塞式I/O操作后,或者被其它线程独占资源(比如锁),相应的线程会处于该状态,当线程重新获得资源后,又可以变为RUNNABLE.

    WAITING : 一个线程执行了某些方法后就会处于这种等待状态。包括Object.wait(),Thread.join(),LockSupport.park(Object).从WAITING变为RUNNABLE,Object.notify(),

/notifyAll()和LockSupport.unPart(Object).

    TIMED_WATING : 不是无限期等待,带有时间限制,时间限制一到,不管如何,自动转为RUNNABLE

    TERMINATED: Thread.run()正常返回或抛出异常提前终止都会处于这个状态,只会保持一次,由于一个线程只启动一次

猜你喜欢

转载自www.cnblogs.com/goxcheer/p/9291890.html