关于java并发编程的疑问,对象的不正确发布会导致正确的对象被破坏

qq_17295583 2017-07-27 11:29:59
这是java并发编程实战里个一个例子:
书本是这么解释的:由于未被正确的发布,因此这个类可能会出现故障
public class Holder{
private int n;
public Holder(int n){
this.n=n;
}
public void assertSanity(){
if(n!=n){
throw new AssertionError("This statement is false");
}
}
}
这个例子是怎么不被正确发布啊,麻烦解释一下
还有下面这个例子也是属于不准确的发布,麻烦也解释一下
public Holder holder;
public void initialize(){
holder=new Holder(42);
}
书上是怎么解释的由于可见性的问题,其他线程看到的holder对象将处于不一致的状态。
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
???971 2021-02-05
  • 打赏
  • 举报
回复
因为对象的引用和对象的构造,是可以重排序的,由于构造尚未完成,便已经引用出去,导致引用的对象还未构造完,导致想发布的和实际的状态不一致
u010556601 2017-10-01
  • 打赏
  • 举报
回复
现在有答案来吗?我也不理解这段

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧