后端经典面试题合集, 线程的生命周期是什么,线程有几种状态,什么是上下文切换?
后端经典面试题合集, 线程的生命周期是什么,线程有几种状态,什么是上下文切换?
QA
Step 1
Q:: 线程的生命周期是什么?
A:: 线程的生命周期通常包括以下几个阶段:
1.
新建(New):线程被创建后,还未开始运行。
2.
就绪(Runnable):线程已经准备好运行,等待CPU资源。
3.
运行(Running):线程获得CPU资源,正在执行。
4.
阻塞(Blocked):线程在等待某个外部资源(如IO、锁等)时进入阻塞状态,暂停执行。
5.
等待(Waiting):线程进入等待状态,需要等待其他线程做出某些动作(如notify、notifyAll)才能继续执行。
6.
超时等待(Timed Waiting):与等待类似,但有超时时间,超时后自动返回就绪状态。
7.
终止(Terminated):线程执行完成或因异常退出,生命周期结束。
Step 2
Q:: 线程有几种状态?
A:: 线程的状态主要包括以下几种:
1. **New(新建)**:线程对象创建后,但未调用start()
方法。
2.
Runnable(可运行):线程被调度后处于就绪状态,等待分配CPU时间。
3.
Blocked(阻塞):线程在等待某个监视器锁的释放。
4.
Waiting(等待):线程等待其他线程触发的某些条件。
5.
Timed Waiting(超时等待):线程在等待的同时带有超时时间,时间到达后线程自动返回就绪状态。
6.
Terminated(终止):线程已经完成执行或被中断。
Step 3
Q:: 什么是上下文切换?
A:: 上下文切换是指操作系统将CPU从一个进程或线程切换到另一个进程或线程的过程。上下文切换涉及保存当前线程的状态(寄存器、程序计数器等)并恢复下一个线程的状态。这一过程虽然开销不大,但频繁的上下文切换可能会影响系统性能。
用途
这些问题主要是为了考察候选人对操作系统和多线程编程的理解。在高并发场景下,线程管理、上下文切换和线程状态控制直接影响系统性能和稳定性。在实际生产环境中,尤其是涉及到并发编程、性能调优、线程池管理等场景时,开发者需要深入理解这些概念以设计出高效、稳定的系统。\n相关问题
🦆
如何避免死锁?▷
🦆
线程和进程的区别是什么?▷
🦆
线程安全的实现方式有哪些?▷