![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发
他山之途
这个作者很懒,什么都没留下…
展开
-
Java 内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java 内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM 对正确同步的多线程程序的内存一...转载 2019-03-26 11:10:08 · 71 阅读 · 0 评论 -
Java 内存模型(四)——volatile
volatile 的特性当我们声明共享变量为 volatile 后,对这个变量的读 / 写将会很特别。理解 volatile 特性的一个好方法是:把对 volatile 变量的单个读 / 写,看成是使用同一个监视器锁对这些单个读 / 写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile lon...转载 2019-03-26 11:10:33 · 167 阅读 · 0 评论 -
Java 内存模型(五)——锁
锁的释放 - 获取建立的 happens before 关系锁是 java 并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放 - 获取的示例代码:class MonitorExample { int a = 0;public synchronized void writer() { //1 a++; ...转载 2019-03-26 11:15:14 · 107 阅读 · 0 评论