美文网首页java全家桶
线程生命周期(状态)

线程生命周期(状态)

作者: 趁年轻多奋斗 | 来源:发表于2019-05-01 10:42 被阅读0次

当线程创建并启动后,他并不是一启动就进入执行状态,也不是一直都处在执行状态。会经常在运行与阻塞进行线程切换。线程经过状态:新建(new)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。

新建状态

当程序使用new创建一个线程是,当前线程处于新建状态,此时由JVM为其分配内存,并初始化其成员变量的值。

就绪状态

当线程调用start()方法后,该线程就处在就绪状态。JVM会为其创建方法调用栈和程序计数器,等待调度运行。

运行状态

当线程处于就绪状态并获得CPU时,开始执行run()方法线程执行体。则线程处于运行状态。

阻塞状态

指线程因为某种原因放弃了CPU使用权,也即让出了CPU timeslice,暂时停止运行。直到线程进入可运行状态,才有机会再次获得CPU timeslice转到运行状态。阻塞分为三种 :

  1. 等待阻塞:运行线程执行o.wait()方法,JVM会把线程放到等待队列中。
  2. 同步阻塞(lock→锁池):运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
  3. 其他阻塞(sleep/join):运行的线程执行Thread.sleep(long ms)或t.join()方法,或者发出I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或超时、或者I/O处理完毕时,线程重新转入可运行(就绪)状态。

线程死亡

  1. 正常结束:run()或call()方法执行完成,线程正常结束。
  2. 异常结束:线程抛出一个未捕获Exception或Error。
  3. 调用stop:直接调用线程的stop()方法,该方法容易导致死锁。
流程图

相关文章

  • 线程的学习总结

    我打算从线程得生命周期开始总结多线程: 线程的生命周期: 新建状态:线程对象创建之后,线程进入新建状态. 就绪状态...

  • Java知识梳理六

    一、Java多线程一 1.谈谈线程的生命周期和状态转移 关于线程生命周期的不同状态,在Java 5以后,线程...

  • 我的涂床

    线程状态及生命周期

  • java多线程基本概念(一)

    线程生命周期 说明线程工共包含5个状态: 新建状态new:调用线程构造方法创建线程后,线程进入新建状态; 就绪状态...

  • Java基础知识(三)

    一、线程状态转化 线程状态生命周期如下: 新建状态(New):新创建了一个线程对象。 就绪状态(Runnable)...

  • Thread相关学习之二 - JavaThread&JV

    线程生命周期 JavaThread生命周期 线程生命周期就在上述的6个状态中流转,如下图: JVMTIThread...

  • 多线程-线程生命周期

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

  • 【问答】Java多线程

    线程的状态,画一个线程的生命周期状态图 线程状态:NEW,未启动的线程;RUNNABLE,运行中,包括就绪状态和运...

  • 多线程知识点整理

    1、多线程基础 线程的生命周期(状态)NEW:就绪状态Java线程刚刚被创建,调用start()方法之后不代表线程...

  • 多线程学习笔记

    一.线程基础概念 1.线程生命周期 线程生命周期 新建-就绪-运行-死亡,运行中可以进入阻塞状态 线程执行完任务会...

网友评论

    本文标题:线程生命周期(状态)

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