一心多用多线程-线程的生命周期

这里写图片描述

想起前段时间做校招的时候经常会被问到线程的生命周期问题,现在结合api做一下归纳

1.新建状态

new Thread()

创建一个线程,现在的线程并没有具备运动能力的,可以想象你新建了一只兔子,但是这只兔子没有你的命令不能行动。

2.可运行状态

thread.start()

当调用该命令时,线程具备运动的能力,但不一定能运动(此时有别的线程在运行,或者有一个IO在阻塞),所以具备运动能力的兔子不一定能运动,现在的兔子是可运行状态。

3.运行状态

thread.run()//自动调用

这很容易理解,当兔子开始跑的时候呢,就是线程里面的run方法真的被运行的时候,就是线程的运行状态

thread.join()

调用该方法时会首先执行该线程,你想想你把一只兔子加入了一个比赛的行列的第一个位置,那这样是不是后面的兔子都得等这只兔子跑完才能跑呢。

4.阻塞状态

thread.sleep(1000);//此时的线程不释放锁,但是已经阻塞
thread.wait() //此时的唤醒需要用 thread.notify|thread.notifyAll 此时的线程释放锁
thread.suspend() //wait 的旧版本,唤醒需要用 thread.resume() 该方法会引发死锁问题
thread.yield() //“退让”,该线程让出当前CPU运行片,让别的线程可以使用,但是不保证该线程又会再一次抢占CPU 

兔子想睡觉的时候别人不可以打扰,一定要等他睡完了才能继续跑。
如果你让兔子停的话,那么兔子就会听你的命令,他就不比赛了 把锁也给抛弃掉了,如果你想让他继续的话你必须通知他。
如果你劝一只兔子退让一下让别的兔子通过桥的话,他可以选择不听你的。

5.死亡状态
如果兔子比赛完了,那么他就死了。
如果兔子在跑的过程中身体出现了异常,那么他就死了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值