猿问

Java多线程与安全发布

Java多线程与安全发布

阅读后“Java并发在实践中的应用“和”OSGi在实践中的应用“我发现一个特别的主题非常有趣;安全的出版物。以下是来自JCIP的:

为了安全地发布对象,对象和对象状态的引用必须同时对其他线程可见。通过以下方法可以安全地发布构造正确的对象:

  • 初始化对象引用。

    静态

    初始化器。
  • 将对它的引用存储到

    易挥发

    场。
  • 将对它的引用存储到

    最终

    场。
  • 将对它的引用存储到由

    同步

    )锁。

我的第一个问题:有多少java开发人员知道这个问题(问题)?有多少真实世界的java应用程序真正遵循这一原则,这真的是一个问题吗?我有一种感觉,99%的已实现的JVM没有“邪恶”,即线程无法保证(事实上,它的实用(几乎)“不可能”)看到陈旧的数据仅仅是因为引用没有遵循上面的“安全发布成语”。


ITMISS
浏览 454回答 3
3回答

绝地无双

“这真的是个问题吗?”当然可以。即使是最琐碎的Web应用程序也必须面对与并发相关的问题。例如,servlet由多个线程访问。另一个问题是线程和并发很难正确处理。几乎太难了。这就是为什么我们看到像事务性内存这样的趋势出现,而类似Clojure这样的语言有望使并发更容易处理。但在这些河流成为主流之前,我们还有一段路要走。因此,我们必须尽力而为。阅读JCIP是一个非常好的开始。

慕桂英3389331

这不是“邪恶”的问题。它是这是一个真正的问题,随着未来几年多核体系结构的兴起,这个问题将变得更加明显。由于同步不当,我已经看到了非常真实的生产错误。为了回答你的另一个问题,我想说很少有程序员意识到这个问题,即使在其他“优秀”的开发人员中也是如此。
随时随地看视频慕课网APP
我要回答