Java的线程在运行中会进行状态的切换,
Thread类中有个线程状态枚举,设置线程的状态有以下几种:
public enum State {//线程状态 NEW, //新建,new Thread后 start前的状态 RUNNABLE, //就绪态,java中的就绪态同时包括运行态,start() 后的状态 BLOCKED, //阻塞态,多个线程获取锁时,发现锁已经被其他线程获取,则自己进入阻塞态,其他线程释放锁后从阻塞态解除去竞争锁 WAITING, //等待状态,当调用Object.wait、Thread.join、LockSupport.park进入等待状态,进入等待状态的线程不能自己退出,只能由其他线程唤醒 TIMED_WAITING, //超时等待,调用sleep、wait(long)、join(long)、LockSupport.parkNanos、LockSupport.parkUntil时进入超时等待,时间到自动解除等待 TERMINATED; //终止 }