1、新建状态:创建了一个线程;
2、可运行状态:调用了线程的start()方法,等待操作系统的调度;
3、运行状态:线程被操作系统调度,获得了CPU使用权,执行程序代码;
4、阻塞状态:线程因某种原因进入阻塞状态,让出了CPU使用权,线程暂停运行,直到进入可运行状态,才有机会被操作系统调度重新进入运行状态,主要有以下三种阻塞情况:
(1)等待阻塞:运行的线程调用了wait()方法,线程释放锁并进入等待队列,直到被其他线程的notify()或notifyall()唤醒,重新获得同步锁并进入可运行状态;
(2)同步阻塞:运行的线程在获取对象的同步锁时,若该对象锁被其他线程占用,JVM会把线程放进锁池中去竞争锁,直到获得同步锁并进入可运行状态;
(3)其他阻塞:运行的线程调用了Thread.sleep()、join()或者发出了IO请求,线程将进入阻塞状态,直到sleep()超时、join()等待线程终止或超时、IO请求处理结束,线程才会重新进入可运行状态;
5、死亡状态:线程的run()或者main()方法执行结束,线程死亡;
网友评论