mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-08-01 16:28:03 +08:00
Update 2020最新Java并发基础常见面试题总结.md
This commit is contained in:
parent
fb3a238dde
commit
d342570fb7
@ -155,15 +155,15 @@ Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种
|
||||
|
||||
## 7. 什么是上下文切换?
|
||||
|
||||
线程在执行过程中会有自己的运行条件和状态(也称上下文),比如上文所说到过的程序计数器,栈信息等。当出现如下情况的时候,线程会从占用CPU状态中退出。
|
||||
- 主动让出CPU,比如调用了sleep(),wait()等。
|
||||
线程在执行过程中会有自己的运行条件和状态(也称上下文),比如上文所说到过的程序计数器,栈信息等。当出现如下情况的时候,线程会从占用 CPU 状态中退出。
|
||||
- 主动让出 CPU,比如调用了 `sleep()`, `wait()` 等。
|
||||
- 时间片用完,因为操作系统要防止一个线程或者进程长时间占用CPU导致其他线程或者进程饿死。
|
||||
- 调用了阻塞类型的系统中断,比如请求IO,线程被阻塞。
|
||||
- 调用了阻塞类型的系统中断,比如请求 IO,线程被阻塞。
|
||||
- 被终止或结束运行
|
||||
|
||||
这其中前三种都会发生线程切换,线程切换意味着需要保存当前线程的上下文,留待线程下次占用CPU的时候恢复现场。并加载下一个将要占用CPU的线程上下文。这就是所谓的上下文切换。
|
||||
这其中前三种都会发生线程切换,线程切换意味着需要保存当前线程的上下文,留待线程下次占用 CPU 的时候恢复现场。并加载下一个将要占用 CPU 的线程上下文。这就是所谓的 **上下文切换**。
|
||||
|
||||
上下文切换是现代操作系统的基本功能,因其每次需要保存信息恢复信息,这将会占用CPU,内存等系统资源进行处理,也就意味着效率会有一定损耗,如果频繁切换就会造成整体效率低下。
|
||||
上下文切换是现代操作系统的基本功能,因其每次需要保存信息恢复信息,这将会占用 CPU,内存等系统资源进行处理,也就意味着效率会有一定损耗,如果频繁切换就会造成整体效率低下。
|
||||
|
||||
## 8. 什么是线程死锁?如何避免死锁?
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user