欢迎光临散文网 会员登陆 & 注册

线程的生命周期?

2022-10-19 11:23 作者:网星软件  | 我要投稿

线程的生命周期是指线程从一开始创建,到run方法的运行完毕以后的状态变化【线程状态的切换】

线程状态:新建状态  就绪状态  运行状态  阻塞状态  死亡状态

新建状态:通过new+构造方法创建出线程对象,此时线程就处于新建状态。

                    新建状态的线程不能运行。

就绪状态: 新建状态的线程调用start方法之后就进入就绪状态。

                  就绪状态的线程具有执行能力,但是缺少cpu资源【万事具备,只差资源】

                  经过争抢得到可运行的cpu资源从而进入运行状态。

运行状态:就绪状态的线程得到cpu资源run方法开始执行,此时线程进入运行状态。

                    当cpu资源使用完毕以后会再一次回到就绪状态,继续争抢cpu资源从而再一次入运行状态。

                    1. 运行状态的线程调用sleep方法,线程会进入阻塞状态

                    2. 运行状态的线程调用wait方法,线程会进入阻塞状态

                    3. 输入/输出操作时,线程会进入阻塞状态

                      .........

阻塞状态:有不同的原因导致线程暂时暂停执行,此时的线程就处于阻塞状态。

                 当造成阻塞的原因消失后,在阻塞状态中的线程就进入就绪状态,争抢cpu资源从而再一次入运行状态。

                1.阻塞原因调用sleep方法,休眠时间结束以后进入就绪状态

                2. 阻塞原因调用wait方法,通过调用notify/notifyAll方法唤醒,进入就绪状态

                3. 阻塞原因输入/输出操作,等待输入/输出结束,进入就绪状态

                ......

死亡状态:1.run方法正常执行完毕,线程就进入死亡状态

                2. 调用了stop方法,强制迫使线程进入死亡状态【不安全】

进入死亡状态的线程不能在继续运行,如果要再一次运行起来,需要重新调用start方法,进入就绪状态,争抢cpu资源从而再一次入运行状态。

线程的生命周期?的评论 (共 条)

分享到微博请遵守国家法律