相关疑难解决方法(0)

这是对象的安全发布吗?

我有一个课程项目

class Item {
  public int count;
  public Item(int count) {
    this.count = count;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,我将在其他类的字段中引用Item

class Holder {
  public Item item;
  public Holder() {
    item = new Item(50);
  }
}
Run Code Online (Sandbox Code Playgroud)

这个新的Item对象可以安全发布吗?如果没有,为什么?根据Java Concurrency in Practice,新的Item是在没有完全构造的情况下发布的,但在我看来,新的Item是完全构造的:它的this引用不会被转义,并且它的引用和它的状态同时发布,所以消费者线程不会看到过时的价值.或者是可见性问题.我不知道原因.

java multithreading

7
推荐指数
2
解决办法
1527
查看次数

标签 统计

java ×1

multithreading ×1