除去起始(new)状态和结束(finished)状态,线程有三种状态,分别是:就绪(ready)、运行(running)和阻塞(blocked)。其中就绪状态表明线程具有了运行的全部条件,只等待CPU调度(万事俱备,只欠东风);处于运行状态的线程可能由于CPU调度(时间片用完了)的缘由回到就绪状态,也有可能由于调用了线程的yield方法回到就绪状态,此时线程不会释放它占有的资源的锁,坐等CPU以继续执行;运行状态的线程可能由于I/O中断、线程休眠、调用了对象的wait方法而进入阻塞状态(有的地方也称之为等待状态);而进入阻塞状态的线程会由于休眠结束、调用了对象的notify方法或notifyAll方法或其余线程执行结束而进入就绪状态。注意:调用wait方法会让线程进入等待池中等待被唤醒,notify方法或notifyAll方法会让等待锁中的线程从等待池进入等锁池,在没有获得对象的锁以前,线程仍然没法得到CPU的调度和执行。spa
总结:把图理解记清楚就很好记了线程