Java面试基础02
1、概括解释线程有哪些状态?
①new(新建):新创建了一个线程对象
②runnable(可运行):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取从CPU的使用权。
③、running(运行)runnable状态获得CPU的时间片后执行代码。
④、block(阻塞):阻塞状态因为线程失去了CPU的使用权,暂时停止运行,直到线程回复可运行状态。阻塞的情况分为三种:
1、等待阻塞:运行(running)的线程执行了 Object的wait()方法,jvm会把该线程放入waiting 队列中。
2、同步阻塞:需要获取该对象的同步锁的时候,同步锁被其他线程占用,jvm会把线程放进lock pool中。
3、其他阻塞:运行(running)的线程执行了Thread的sleep()方法或join()方法,或者发出了IO请求,jvm会把该线程置为阻塞状态
⑤、dead(死亡):线程run()、main()方法执行结束,或者因异常退出了run()方法,则线程结束生命周期,死亡的线程不可再次复生。