gpt4 book ai didi

java - 发布一个在不持有用于发布的锁的情况下构造的 @NotThreadSafe 实例是否安全?

转载 作者:行者123 更新时间:2023-12-04 05:19:40 25 4
gpt4 key购买 nike

这是一个安全的出版物吗?

鉴于类(class):

@NotThreadSafe
public class Pub {
int drinkers;
public Pub(int drinkers) {
this.drinkers = drinkers;
}
}

T1 调用 publish()并且 T2 调用 inspect :
private final Object lock = new Object();

@GuardedBy("lock")
private Pub shared;

void publish() {
Pub p = new Pub(12);
synchronized(lock) {
this.shared = p; // publish
}
}

Pub inspect() {
synchronized(lock) {
return shared;
}
}

T2保证看到 shared.drinkers == 12 ?或者我们没有在持有锁的情况下构建 Pub 的事实构成了不安全的发布?

最佳答案

这是一个完全有效的操作。 Pub 要么为空,要么正确初始化。这是因为初始化和赋值在同一个线程上相继发生。

关于java - 发布一个在不持有用于发布的锁的情况下构造的 @NotThreadSafe 实例是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13788369/

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