一、线程的状态
在java中线程一个分为 六大状态如下图
1. 新建状态(NEW)
尚未启动的线程处于此状态
2.可运行状态(Runnable)
在java虚拟机执行的线程处于此状态
可运行状态可以细分为:
(1) 运行状态running
(2) 就绪状态
3.阻塞状态(BLOCK)
被阻塞等待监视器锁定的线程处于此状态
4.等待状态(WAITING)
正在等待其他线程执行特定动作的线程处于此状态
5.计时等待状态(TIMED_WAITING)
正在等待其他线程执行动作到达指定等待时间的线程处于此状态
6.终止状态(TERMINATED)
已退出的线程处于的状态
二.线程的状态转换
1.当一个线程对象用 new 被创建时 其就处于 NEW 状态。
2.NEW状态 调用 start()方法 就转换成 RUNNABLE 状态,处于RUNNABLE状态的线程其他资源均具备,由操作系统提供具体的运行时间。Thread.yeild静态方法转换成Ready状态。
3.阻塞和等待线程,处于该状态的线程它暂时是不活动的。在等待进入同步代码块的锁(内部对象锁)时,线程处于Blocked状态,当其他线程释放了这个锁,并且线程调度器允许该线程持有这个锁时,它将编程非阻塞状态。 当调用o(任意对象).wait()或sleep()等方法处于waiting状态,如果wait()等有时间参数则处于计时等待状态。等待调用o.notify()等方法或超时期满、收到适当的通知转换状态。