线程的生命周期(图解)

面试题

关于线程方面的问题想必是面试时经常被问到的,所以我们来整理下关于线程的生命周期中的一些知识

线程的生命周期

在这里插入图片描述

1.新建
  新建即创建线程对象,用关键字new创建一个线程对象时,线程处于新建状态
2.就绪
   线程对象调用start()方法时,该线程处于就绪状态,此时的线程有执行资格但是却没有执行权
3.运行

如果CPU是单核,则在任一时刻都只有一个线程在执行。当线程数据大于核 数时,就会出现线程轮换。

所有桌面和服务器系统都采用的是抢占式调度策略,即当前线程在系统允许的执行时间之后,就给其他线程获得执行机会,且优先给优化级高的线程。

在运行状态下的线程有执行资格有cpu的执行权

4.阻塞

发生以下情况时,线程将进入阻塞状态:
调用sleep()方法时。此时会放弃它所占用的处理器资源。【过了sleep指定时间不再阻塞】
调用一个阻塞式IO方法还没有返回之前,该线程被阻塞。【阻塞IO方法返回后不再阻塞】
试图获取一个正被其他线程所持有的同步监视器。【拿到监听器不再阻塞】
等待通知时(notify)。【其他线程调用了notify时不再阻塞】
调用suspend()方法将程序挂起时。【线程调用resume()方法时撤销挂起时不再阻塞】

阻塞状态下的线程没有执行资格也没有cpu的执行权,但是一些操作可以把该线程激活(如notify()方法)但是激活后会返回到就绪状态

5.死亡

线程死亡情况:
线程正常结束(run或call方法执行完)

线程抛出一个未捕获的Exception或Error

线程自己调用stop()方法(该方法容易导致死锁)

线程处于死亡状态时,则此线程对象变成垃圾等待被回收

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值