gpt4 book ai didi

Java:同步方法异常和写入可见性

转载 作者:行者123 更新时间:2023-12-02 07:49:44 25 4
gpt4 key购买 nike

如果同步方法抛出异常,则在抛出异常之前在该方法中进行的成员写入是否对其他线程可见?例如

class Foo
{
private int x;

public synchronized void foo()
{
x++;
// some other code using x that throws RTE for a specific thread
}
}

如果 Foo 的对象在线程 t1 和 t2 之间共享,并且 t1 抛出异常(如图所示),在这种情况下,x 的最新值将被刷新到主内存,以便在进入 foo 时对 t2 可见。对象?

最佳答案

是的,更改仍然可见 - 您仍在退出同步块(synchronized block),释放进程中的监视器,并且内存模型并不关心这是如何发生的 - 只是它确实发生。从 JLS section 17.4.4 的角度来看,它仍然是“显示器上的解锁操作” ,因此它与同一监视器上的下一个操作同步。

关于Java:同步方法异常和写入可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10363658/

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