gpt4 book ai didi

java - 在它的关键部分执行的线程可以在 Java 中被抢占吗?

转载 作者:行者123 更新时间:2023-11-30 10:12:36 24 4
gpt4 key购买 nike

如果可以,那么如果抢占当前正在运行的线程的线程试图获取同一对象上的锁怎么办?这些线程将永远处于死锁状态,对吗?

最佳答案

想想看:

  • 线程A获得锁X
  • 线程 A 被“挂起”
  • 线程 B 也想锁定 X
  • 线程 B 被阻塞了

是什么让您认为“线程 B 被阻塞”会导致线程 A 在某个时刻被执行?

是的,鉴于上述情况,A 和 B 目前没有进展。但是没有什么能阻止 A 恢复继续其工作,并在某个时候释放 X。

除此之外,通常的免责声明:在 2018 年,几乎不再有单处理器系统(运行 java)。 “抢占”是一个相当模糊的概念,JVM 的实际“线程行为”在很大程度上取决于 JVM 类型和底层操作系统。

关于优先级情况:任何合理的实现都会从可以实际进行的线程集中选择“下一个”线程来提供循环。 B 是否具有更高优先级并不重要:它被阻止了。如果 A 可以进行,而 B 不能进行,那么在某个时候 A 将进行并应该释放锁。

关于java - 在它的关键部分执行的线程可以在 Java 中被抢占吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com