线程对象在不同的运行时期有不同的状态,状态信息就存在于State枚举类中
线程状态有如上6种。
- NEW状态是线程实例化后还从未执行start()方法时的状态
- RUNNABLE状态是线程进入运行的状态
- TERMINATED是线程被销毁时的状态。
- TIMED_WAITING代表线程执行了Thread.sleep()方法,呈等待状态,等待时间到达,继续向下运行。
- BLOCKED状态出现在某一个线程在等待锁的时候。
- WAITING是线程执行了Object.wait(方法后所处的状态。
notifyAll()
当线程在对象上调用notifyAll()时, 所有WAITING状态的线程都会被唤醒, 所有的线程都会从WAITING状态变成BLOCKED状态, 然后争抢对象的锁. 得到对象锁的线程, 将变成RUNNING状态, 而其他线程则继续保持BLOCKED状态继续等待获取对象锁.