• 线程的生命周期


    线程的生命周期中共有五个状态:

    1.新建 2.就绪 3.运行 4.阻塞 5.死亡


    一. 新建:

    通过new关键字创建线程对象之后,创建的线程就被创建了,处于新建状态.该阶段仅仅和jvm创建其他类一样为对象分配内存,初始化其成员变量的值.线程没有表选出其他的行为.

    二 . 就绪:

    当程序调用线程的start()方法之后该线程就进入了就绪状态,这里注意的是线程并没有因为start()方法的执行直接进入运行状态.原因是线程并没有获得cpu资源,无法处于运行状态.

    三. 运行:

    当就绪的线程因为某些原因(其他线程运行已经完成...)得到cpu资源的时候,线程就开始处于运行状态了.

    四. 阻塞:

    当线运行状态下的线程失去cpu资源的时候,线程就处于了阻塞状态.如1.当线程调用了sleep()方法使线程进入睡眠状态. 2.线程调用了一个阻塞式的方法则在得到结果前线程会进入阻塞状态. 3.当线程需要获得一把同步锁并且得不到的时候就会进入阻塞状态 4.线程在等待某个其他线程的通知时处于阻塞状态. 5.线程调用了suspend()方法使得该线程挂起.该方法容易导致死锁,尽量避免使用.

    五. 死亡:

    当运行中的线程执行完毕后,线程就处于了死亡状态,另外.当线程中调用了stop()方法,或者遇到异常时就会处于死亡状态.已经死亡的状态时无法在运行的.

    线程生命状态过程示例图:
    线程生命状态过程示例图

    注意:不要对同一个线程调用两次start(),一个线程能且仅能运行一次.也不要对已经死亡的线程进行start().都会应发illegalThreadStateException异常


    关注笔者公众号,推送各类原创/优质技术文章 ⬇️

  • 相关阅读:
    windowsCE常用编译参数 及编译器列表
    摘抄System Architecture for Native Device Drivers
    django+vue学习系列
    FreeTextBox的ToolbarButton整理
    FreeTextBox实现机制
    Server的Transfer和Response的Redirect
    FTB2.0和CuteEditor的一些问题
    ASP.NET跨应用程序进行登录的解决
    testFTB2.0
    Rainbow分页解决方案
  • 原文地址:https://www.cnblogs.com/dongxishaonian/p/12666630.html
Copyright © 2020-2023  润新知