什么是对象发布?为什么我们需要它?

Roa*_*ner 14 java

在我为Java Developer进行的一次面试中,我被问到一个问题:

什么是对象发布?为什么我们需要它?

我不确定我知道正确的答案:

我认为对象发布是指将对象(变量)状态放入堆内存时.并且它需要线程之间共享的对象(变量).

我对吗?如果我错了,请纠正我.我一直在搜索Java语言规范,但没有发现任何能明确回答这个问题的内容.

提示:这个问题是故意以非严格和严格的方式形成的 - 这就是它的关键.

Tom*_*son 19

你的答案非常接近.我将对象发布定义为一个线程对另一个线程可见的对象进行引用的行为.通常,这与对象创建有关:您需要确保以这样的方式发布新创建的对象,使得另一个线程将在初始化状态下看到它.

关于此的经典文本(以及许多其他与线程相关的事项)是Java Concurrency in Practice.如果你没有这个副本,并且不能打扰盗版PDF,不是我建议你这样做,而且即使你做了或者可以,你应该留意强大的CERT Oracle Secure Java编写标准建议您不要发布部分初始化对象.

  • 谢谢.从[Java Concurrency in Practice](http://jcip.net/),第3章第3.2段开始:_发布对象意味着使其可用于当前范围之外的代码,例如通过存储对其他代码的引用可以找到它,从非私有方法返回它,或将它传递给另一个类中的方法._ (3认同)