首页 文章 线程状态与生命周期

线程状态与生命周期

2024-06-09 12:21  浏览数:291  来源:许某    

线程从创建到最终消亡的过程被称为线程的生命周期。线程在整个生命周期中的状态包括新建、就绪、运行、阻塞和死亡。它
们之间的转化关系。新建状态使用new关键字和Thread类或其子类建立一个线
程对象后,该线程对象就处于新建状态。它将保持这个状态直到程序start()这个线程。就绪状态当线程对象调用了s
tart()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM线程调度器的调度。运行状
态如果就绪状态的线程获取了CPU资源,就可以执行run(),此时线程便处于运行状态。处于运行状态的线程最为复杂
,它可以变为阻塞状态、就绪状态和死亡状态。阻塞状态如果一个线程执行了sleep(睡眠)、suspend(挂起)
等方法,就会暂时释放占用的CPU资源,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得CPU资源后,其可以
重新进入就绪状态。阻塞状态又可以分为以下3种:(1)等待阻塞。运行状态中的线程执行wait()方法,使线程进入
等待阻塞状态。(2)同步阻塞。程序获取synchronized同步锁失败(因为同步锁被其他线程占用)。(3)其
他阻塞。当通过调用线程的sleep()或join()发出I/O请求时,线程就会进入阻塞状态。当sleep()状
态超时、join()等待线程终止或超时或者I/O处理完毕,线程重新转入就绪状态。死亡状态当一个处于运行状态的线
程完成任务或者其他终止条件发生时,该线程就切换到终止状态。一个线程从创建开始,通过调用不同的方法实现线程状态之
间的转化,实现了对进程的控制和调度,从而完成在线程run()方法中定义实现的业务逻辑操作。



声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。

字符:    改为:
去打字就可以设置个性皮肤啦!(O ^ ~ ^ O)