gpt4 book ai didi

java - java 类中的锁

转载 作者:行者123 更新时间:2023-12-01 15:34:19 26 4
gpt4 key购买 nike

假设我们有下一个示例代码:

while(some condition){
lock1.lock();
.
.
}

问题是:

假设运行此代码部分的某个线程的 while 循环条件正在退出,并且 lock1 可用,该线程是否有可能检查循环条件但仍然无法获得锁?

或者在这种情况下是否保证如果检查条件,线程就会获得锁?

最佳答案

简而言之:是的,这是可能的。

如果另一个线程已经获取了锁,那么您的线程将被迫等待它释放。

请记住,您无法知道两个或多个并发执行的线程如何交错其指令执行。假设有两个线程 A 和 B 执行此代码。如果线程 A 发现条件为 true,则在实际获取锁之前(即在评估 while 条件和调用lock()),因此线程 B 也发现条件为真,获取锁,线程 A 继续等待。

关于java - java 类中的锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9143284/

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