开发者社区> 问答> 正文

关于死锁

如果一堆线程中的某几个线程是因为 synchronized 内置锁导致的死锁,这几个死锁的线程会被挂起,让出CPU执行权,并进行上下文切换。但是另一个问题就是,这几个死锁的线程是否还会拿到CPU执行权呢?因为内置锁阻塞的线程会进入阻塞态,而不是就绪态,可是如果想要拿到CPU执行权需要进入就绪态才行,被内置锁阻塞的死锁线程是否有机会进入就绪态? 目前从下面的死锁的demo中来看,线程始终是处于BLOCKED状态,那么是否意味着不会进入就绪状态?如果不进入就绪状态就无法拿到CPU执行权,不占用计算机的系统资源,既然如此,为何有些说法是死锁会导致系统越来越卡顿?不过反过来思考,如果没有死锁的发生,那些被内置锁所阻塞的线程如何切换到就绪态拿到CPU执行权的?

图片.png 图片.png 图片.png 图片.png

展开
收起
景凌凯 2020-04-24 17:17:24 1142 0
1 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!
    • • 锁卡顿是不是从应用程序的角度看的,对人或os来说死锁即不会被调度,应该是不占CPU
    2020-04-24 17:17:40
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载