美文网首页
多线程-线程生命周期

多线程-线程生命周期

作者: ffxxbb5 | 来源:发表于2019-06-07 01:36 被阅读0次
    image.png

    线程总共有6个生命周期状态,线程状态可以通过thread.getState()查看

    线程状态是Thread.State枚举类型定义的

    1.新建(new):已创建而未启动,由于线程实例只能被启动一次,因此一个线程只可能有一次处于该状态
    2.runnable:包括两个子状态:READY和RUNNING

    前者表示改状态的线程可以被线程调度器进行调度而使之处于RUNNING状态

    后者表示处于改状态的线程正在运行,即相应线程对象的run方法所对应的指令正在由处理器执行。

    执行Thread.yield(),状态可以会转换为READY

    3.Blocked:线程发起阻塞式I/O操作,或者申请一个独占资源时就会处于该状态。

    处于该状态的线程并不会占用处理器资源

    4.WAITING:线程执行了Object.wait(),Thread.Join()和LockSupport.park(Object),会是现成变为Waiting状态。
    执行Object.notify()/notifyAll()和LockSupport.unpark(Object)可以使线程变回RUNNABLE状态

    5.TIMED_WAITING:该状态和waiting类似,差别在于处于改状态的线程并非无限地等待其他线程执行特定操作,而是有事件限制地。

    当其他线程没有在指定时间内执行该线程所期望的特定操作时,该线程的状态自动转换为RUNNABLE.

    6.TERMINATED:Thread.run()正常返回或者由于抛出异常而提前终止都会导致线程处于该状态

    相关文章

      网友评论

          本文标题:多线程-线程生命周期

          本文链接:https://www.haomeiwen.com/subject/nmmpxctx.html