gpt4 book ai didi

java - 多线程和线程抢占同步

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:50:50 27 4
gpt4 key购买 nike

假设我有下面这段代码

public synchronized void method()
{
if(something == null)
{
something = new SomeThing();
}
//do something
}

现在假设在一个多线程环境中,一个线程[线程 1] 进入该方法并在它执行完 new Something(); 后立即被抢占。但在它能够将其分配给 something 之前.然后另一个线程 [Thread 2] 也尝试调用该方法。现在到底发生了什么?线程 1 获得的锁发生了什么变化?线程 1 的步骤会回滚吗?

最佳答案

Thread1并没有放弃锁,所以它仍然拥有它。当 Thread2 准备获取锁时,它会发现它必须等待并进入 BLOCKED 状态。下次 OS 调度 Thread1 时,它将完成执行并释放锁。这允许 Thread2 再次可调度。

关于java - 多线程和线程抢占同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976467/

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