相关疑难解决方法(0)

不是线程安全的对象发布

在实践中阅读Java并发,第3.5节:提出索赔

public Holder holder;
public void initialize() {
     holder = new Holder(42);
}
Run Code Online (Sandbox Code Playgroud)

除了创建2个Holder实例的明显线程安全危险之外,本书声称可能会出现一个可能的发布问题,对于Holder类来说更是如此

public Holder {
    int n;
    public Holder(int n) { this.n = n };
    public void assertSanity() {
        if(n != n)
             throw new AssertionError("This statement is false.");
    }
}
Run Code Online (Sandbox Code Playgroud)

可以抛出AssertionError!

这怎么可能 ?我能想到的唯一可以允许这种荒谬的行为是,如果Holder构造函数不会被阻塞,那么当构造函数代码仍在不同的线程中运行时,将为该实例创建一个引用.这可能吗 ?

java concurrency thread-safety

14
推荐指数
2
解决办法
2492
查看次数

标签 统计

concurrency ×1

java ×1

thread-safety ×1