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()方法,则线程结束生命周期,死亡的线程不可再次复生。

Java面试基础02