转载自:https://blog.csdn.net/pange1991/article/details/53860651
线程的状态分为:
1.初始化(NEW):刚new出来的实例
2.就绪(READY):ready只是说你可以准备开始运行了,但还没运行。
进入就绪状态的几种情况
{
a.一个刚new出来的线程调用start()方法后
b.处于running状态的线程调用yield()方法
c.sleep()方法结束
d.同步队列中的线程拿到锁后
}
3.运行中(RUNNING)
4.阻塞(BLOCKED):
5.等待(WAITING)
6.终止(TERMINATED)

线程状态及转换
调用wait方法后会进入等待队列,需要另一个线程调用同一个对象的notify()方法,才会从等待队列中挑选一个进入同步队列(也是这里我才知道一些Object中为什么会有notyfy()方法对原因)。注意notyfy()不会立即生效,必须等到调用方法执行完同步代码块,放弃锁之后才会起作用(等待队列与同步队列的图可以看转载来源,很形象易懂)

相关文章: