java线程的状态转换
1 Runnable表示线程就绪,即可以执行,但仍未获得cpu。
进入runnable的方式有:
1)A.sleep(20),20毫秒后,A进入runnable,
2)A.join(B),则A即时进入blocked拥塞,并且等待B结束running执行状态后,A自动进入runnable就绪
3)A.read("c:\\text.txt"),则当文档读完后,A对应的IO线程进入runnable状态。
4)A中的某个方法method1()中有Thread.yield(),则调用method1()时,会使A的当前对象结束running而进入runnable
5)synchronized同步锁被释放。这个~~
6) new Thread(实现runable).或者new Thread的子类,可以新建线程A。A.start后,A线程进入runnable状态
2 Blocked表示拥塞
1)调用对象的wait join sleep方法会使该对象进入Blocked synchronized会使;
2)Blocked中的(等待Blocked)的对象可以被notify/notifyAll/interrupt。从而进入(锁定 Blocked)
3 dead状态
只能在running状态下等待run()方法正常结束,或者异常退出,线程才能进入dead状态。
--------------------
4坦白的讲,synchronized锁定我仍没看懂。在加油呢,留言鼓励下我吧~