From 20d4644d23eb50739120b7d0395f3d1bf97f2f1a Mon Sep 17 00:00:00 2001 From: Amos Chu Date: Thu, 22 Sep 2022 08:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D=E5=AD=97?= =?UTF-8?q?=E2=80=9C=E5=BC=80=E5=8F=91=E5=8F=91=E8=80=85=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/concurrent/jmm.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/java/concurrent/jmm.md b/docs/java/concurrent/jmm.md index c4895972..2da330c8 100644 --- a/docs/java/concurrent/jmm.md +++ b/docs/java/concurrent/jmm.md @@ -71,7 +71,7 @@ Java 是最早尝试提供内存模型的编程语言。由于早期内存模型 **为什么要遵守这些并发相关的原则和规范呢?** 这是因为并发编程下,像 CPU 多级缓存和指令重排这类设计可能会导致程序运行出现一些问题。就比如说我们上面提到的指令重排序就可能会让多线程程序的执行出现问题,为此,JMM 抽象了 happens-before 原则(后文会详细介绍到)来解决这个指令重排序问题。 -JMM 说白了就是定义了一些规范来解决这些问题,开发发者可以利用这些规范更方便地开发多线程程序。对于 Java 开发者说,你不需要了解底层原理,直接使用并发相关的一些关键字和类(比如 `volatile`、`synchronized`、各种 `Lock`)即可开发出并发安全的程序。 +JMM 说白了就是定义了一些规范来解决这些问题,开发者可以利用这些规范更方便地开发多线程程序。对于 Java 开发者说,你不需要了解底层原理,直接使用并发相关的一些关键字和类(比如 `volatile`、`synchronized`、各种 `Lock`)即可开发出并发安全的程序。 ### JMM 是如何抽象线程和主内存之间的关系? @@ -229,4 +229,4 @@ happens-before 与 JMM 的关系用《Java 并发编程的艺术》这本书中 - 《深入浅出 Java 多线程》:http://concurrent.redspider.group/RedSpider.html - Java 内存访问重排序的研究:https://tech.meituan.com/2014/09/23/java-memory-reordering.html - 嘿,同学,你要的 Java 内存模型 (JMM) 来了:https://xie.infoq.cn/article/739920a92d0d27e2053174ef2 -- JSR 133 (Java Memory Model) FAQ:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html \ No newline at end of file +- JSR 133 (Java Memory Model) FAQ:https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html