java基础类库学习(七.2)线程的生命周期

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/83785578

前言

利用java的类/接口创建好用户线程后,我们调用线程对象的启动方法,让线程启动

线程的生命周期:新建new 就绪runnable 运行running 阻塞blocked 死亡die

线程会在几种状态之间改变

新建new

线程类通过继承Thread实现Runnable/Callable接口来创建,通过new创建线程类的实例时,该线程处于new新建状态,线程对象在虚拟机内被分配了内存,并初始化了成员变量的值,

就绪runnable

线程对象调用了start()方法,该线程处于就绪runnable状态,java虚拟机会为其创建方法调用栈和程序计数器,

运行running

由jvm里线程调度器调度,处于就绪状态的线程获得了cpu,开始执行run()的方法体

阻塞blocked

但是不可能是一个线程一直在占用虚拟机,还需要提供给其他线程获得处理机的机会,因此线程会进入阻塞状态,给其他线程获得处理机的机会,此线程会在合适的时候重新进入就绪状态,再次等待调度器来调度它

注意:就绪和运行态之间的转换通常不受程序控制,而是由系统调度所决定

(当处于就绪状态的线程获得处理器时,该线程进入运行状态,当处于运行状态的线程失去处理器时,线程进入就绪状态)

死亡died

线程的run()/call()方法体结束,线程死亡

线程抛出一个未捕获的异常/error,线程死亡

线程对象调用stop()方法,线程死亡

猜你喜欢

转载自blog.csdn.net/strivenoend/article/details/83785578
今日推荐