zoukankan      html  css  js  c++  java
  • Java 10大优点—Part4—Java内存模型

    本文由 ImportNew - 靳禹 翻译自 zeroturnaround。如需转载本文,请先参见文章末尾处的转载要求。

    在忙着参加在爱沙尼亚进行的 TEDx talk 演讲活动以及在比利时举办的一届非常忙碌的Devoxx 会议的间隙我将继续推进 Java’s Rocking 的系列博文

    对还没有接触过这个系列博文的读者,不妨先看看这个系列文章所包含的内容同时这也是我个人最喜爱的Java 平台的10个优点

    •    Java编译器
    •    Core API
    •    开源
    •    Java内存模型
    •   高性能虚拟机(VM)
    •   字节码(Bytecode)
    •   聪明的IDE
    •   性能分析工具
    •   向后兼容性
    •   成熟与创新

    这篇文章的内容是阐述第四点——Java内存模型

    Java 内存模型强在哪里

    并行计算已成为当前提高计算能力的必由之路于此相对应的多年来对于并发的使用也已经在各种程序中变得不可或缺甚至这种对并发的应用仅仅是在程序中使用了一个处理事件分发的线程但即便如此应用程序也需要对内存的变化有一个完整、一致的视图正是这样的视图确保了不同程序在内存中写入的数据对于其他线程或者进程是可见的。而处理器和内存模型所提供的访问控制正是实现上述视图所需要的

    Java虚拟机在独立于硬件的层面上更进一步地实现了自有的内存模型基于此,Java 相对于其他编程语言(诸如 Perl、PythonJavascript)在处理并发原语时,并不需要依赖于任何外部的库而是直接在Java虚拟机的内核中进行处理这种对并发的控制可以被应用于任何需要协作或保持数据一致性的场景中。Java内存模型使得Java语言本身编译器、Core API可以有一个统一的设计并以此来保证Java可以提供一个处理并发操作以及状态共享的可靠基础

    实践出真知

    尽管Java早在1.0版就引入了内存模型,但在早期版本中存在着一些严重的问题.。Java社区就此分析了JSR-133 中提及的改进需求,经过了后续几年的艰苦工作,2004年随着J2SE(1.5版本)的发布推出了我们现在所熟悉的那个健壮的Java内存模型和处理并发API。自此之后还没有出现过需要进行重新设计才能解决的重大问题

    Java是最早提供这种完善的多线程模型的编程语言。而现在,这种标准化的内存语义已经被整个行业所认可正是看到了Java在内存模型上的成功,C++C2011年发布的第11版中首次加入了其原生的内存模型

    让并发的程序正确的运行并不是一件简单的事情幸运的是在今天我们有不同方案来应对并发环境中的各种问题除了运用线程来进行并发处理基于行动者(Actor)模型的并发实现也许符合当前对于并发实现的需要除此之外其他可选的并发模型还包括软件事务存储模型、Fork/Join(创建子进程/等待进程退出) 或者多种不同的同步锁实现

    选择一个最适合你项目的并发方案非常简单,你无需考虑编译器硬件和依赖库是不是对你选择的并发方案兼容这是因为所有这些不同解决方案的实现全部基于Java内存模型Java内存模型提供了解决并发问题的基础。有了这些基础,选择一个适合的技术就变得容易多了

    扩展阅读

    如果你想更进一步了解Java内存模型的内部工作机制和其所提供的便利下面的链接或许对你有帮助

    感谢您的阅读欢迎在 Twitter 上给我留言 @gbevin. 请关注 Javas Rocking 系列第五篇高性能虚拟机!

    原文链接: zeroturnaround 翻译: ImportNew.com 靳禹
    译文链接: http://www.importnew.com/7526.html

  • 相关阅读:
    windows下Yarn安装与使用(两种方法)
    git配置公钥---解决码云出现git@gitee.com: Permission denied (publickey)
    npm使用国内镜像的两种方法
    【LeetCode】33. Search in Rotated Sorted Array (4 solutions)
    【LeetCode】83. Remove Duplicates from Sorted List
    【LeetCode】82. Remove Duplicates from Sorted List II
    【LeetCode】85. Maximal Rectangle
    【LeetCode】84. Largest Rectangle in Histogram
    【LeetCode】87. Scramble String
    【LeetCode】162. Find Peak Element (3 solutions)
  • 原文地址:https://www.cnblogs.com/daichangya/p/12958943.html
Copyright © 2011-2022 走看看