第二篇文章:线程的状态(生命周期) 五种状态和六种状态

 其实只要记blockied阻塞态和waiting等待态这两个状态即可

 

 blocking状态和waiting状态的区别:

线程竞争锁,没有获取到锁就会进入到blocking阻塞态,获取到锁就会从blocking阻塞态变成running运行态

正在运行的线程1需要等待另一个线程2运行的结果,此时线程1就会主动调用wait()方法,进入waiting等待状态,当其他线程,调用notify方法的时候,就会唤醒处于waiting态的线程,线程被唤醒后并不一定会立即获得锁,而是进入blocked阻塞态,和其他处于blocked阻塞态的线程一起竞争锁,

其他图都不要管,就记下面这张图就行:

1.new状态  新建状态  调用new Thread()线程就进入这个状态了

2.Runnable  运行状态 线程调用start方法后,该线程就会进入运行状态

3.Blocked状态 阻塞状态,没有抢到同步锁就会变成阻塞状态

4.waiting  等待状态  ,占有锁(假设锁是obj对象)的线程调用obj.wait()方法,就会把锁让出去,自己进入这把锁的等待队列里面,只有等占有锁的调用obj.notify()方法,才会去这把锁的等待队列中选一个线程让他占有锁进入runn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值