美文网首页
线程的生命周期

线程的生命周期

作者: 躺在家里干活 | 来源:发表于2019-10-08 09:49 被阅读0次

    线程的生命周期图


    生命周期图
    • 新建(new Thread)
    • 当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动),此时系统还没有为其分配资源
    • 例如:Thread t1=new Thread()
    • 通过Thread类的方法,可以设置线程的优先级(setPrioriry)、线程名(setName)、线程类型(setDaemon)

    </br>

    • 就绪(runnable)
    • 线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源
    • 例如:t1.start()
    • 如果某线程执行了yield()方法,那么该线程会被暂时剥夺CPU资源,重新进入就绪状态

    </br>

    • 运行(running)
    • 线程获得CPU资源正在执行任务(run()方法),此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束
    • 通过使用Thread类的isAlive方法,可以判断线程状态,true代表线程处于就绪或运行状态,false表示线程处于 阻塞或停止状态

    </br>

    • 死亡(dead)
    • 当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行

    </br>

    • 自然终止:正常运行run()方法后终止
    • 异常终止:调用stop()方法或interrupt()方法让一个线程终止运行
    • 阻塞(blocked)
    • 由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态

    </br>

    • 正在睡眠:用sleep(long t)
    • 正在等待:调用wait()方法的对象将会进入阻塞状态。调用motify()方法回到就绪状态。调用上述方法时要求线程首先获取到该对象的锁

    我的个人博客,有空来坐坐

    相关文章

      网友评论

          本文标题:线程的生命周期

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