Java


7/9/2018 Other

当程序使用某个类时, 如果该类还没被初始化, 加载到内存中, 则系统会通过加载、连接、初始化三个过程来对该类进行初始化. 该过程就被称为类的初始化


8/8/2016 JavaSE JVM
  1. 在构造函数内对一个final域的写入, 与随后把这个被构造对象的引用赋值给一个引用变量, 这两个操作之间不能重排序.

  2. 初次读一个包含final域的对象的引用, 与随后初次读这个final域, 这两个操作之间不能重排序.

原文出处 https://segmentfault.com/a/1190000000474047


8/7/2016 JavaSE JVM JMM
  1. 在构造函数内对一个final域的写入, 与随后把这个被构造对象的引用赋值给一个引用变量, 这两个操作之间不能重排序.

  2. 初次读一个包含final域的对象的引用, 与随后初次读这个final域, 这两个操作之间不能重排序.

原文出处 https://segmentfault.com/a/1190000000453976


8/6/2016 JavaSE JVM JMM

锁是java并发编程中最重要的同步机制. 锁除了让临界区互斥执行外, 还可以让释放锁的线程向获取同一个锁的线程发送消息. 下面是锁释放-获取的示例代码:

原文出处 https://segmentfault.com/a/1190000000460772


8/5/2016 JavaSE JVM JMM

当我们声明共享变量为volatile后, 对这个变量的读/写将会很特别. 理解volatile特性的一个好方法是: 把对volatile变量的单个读/写, 看成是使用同一个锁对这些单个读/写操作做了同步

原文出处 https://segmentfault.com/a/1190000000453976


8/4/2016 JavaSE JVM JMM

如果程序是正确同步的, 程序的执行将具有顺序一致性(sequentially consistent)–即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同(马上我们将会看到, 这对于程序员来说是一个极强的保证). 这里的同步是指广义上的同步, 包括对常用同步原语(lock, volatile和final)的正确使用.

原文出处 https://segmentfault.com/a/1190000000451173


8/3/2016 JavaSE JVM JMM

Java编译器、运行时会对指令进行重排序. 这种重排序在单线程和多线程情况下分别有什么影响呢?

原文出处 https://segmentfault.com/a/1190000000448896


8/2/2016 JavaSE JVM JMM

介绍 Java 内存模型 3 大核心

  • 原子性
  • 可见性
  • 顺序性

原文出处 https://segmentfault.com/a/1190000000435392


8/1/2016 JavaSE JVM JMM
1234 Next 跳转到: GO