上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 51 下一页
摘要: 1 前言 这节我们来看看JDK底层的unsafe,因为很多的操作都是依赖于unsafe提供的功能的。 2 unsafe是什么? unsafe是JDK提供的一个工具类,里面的方法大多是native方法,unsafe类是JDK给你提供的一个直接调用操作系统底层功能的一个工具类,unsafe提供了非常多操 阅读全文
posted @ 2023-04-03 16:46 酷酷- 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看synchronized是怎么保证原子性、可见性、有序性。 2 原子性 通过前面的篇章我们知道 synchronized 底层实际上通过JVM来实现的,同一时间只能有一个线程去执行synchronized 中的代码块。 原子性:既然同一时间只有一个线程去运行里面的代码,那么这 阅读全文
posted @ 2023-04-03 07:53 酷酷- 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们来看看synchronized的锁重入、锁优化、和锁升级的原理。 2 synchronized锁重入 所谓锁重入,就是支持正在持有锁的线程支持再次获取锁,不会出现自己锁死自己的问题。 比如以下的代码: synchronized(this) { synchronized(this){ 阅读全文
posted @ 2023-04-03 07:29 酷酷- 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 1 前言 之前我们说过对象头的信息,这节我们就来看看synchronized是怎么通过monitor进行重量级加锁。 2 内容回顾 我们先来回顾下Mark Word的内容: 当Mark Word的最后两位的锁标志位是10的时候,Mark Word这哥们说自己处于重量级锁的模式,重量级加锁不是它的责任 阅读全文
posted @ 2023-04-02 21:57 酷酷- 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 1 前言 这节我们就来看看volatile怎么通过内存屏障保证可见性和有序性。 2 保证可见性 volatile修饰的变量,在每个读操作(load操作)之前都加上Load屏障,强制从主内存读取最新的数据。每次在assign赋值后面,加上Store屏障,强制将数据刷新到主内存。 以volatile i 阅读全文
posted @ 2023-04-02 15:43 酷酷- 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 1 前言 volatile是java语言提供的一个关键字,用来修饰变量的,使用volatile修饰的变量可以保证并发安全的可见性和有序性。 volatile int i = 0; public void add() { i++; } 使用方法就是声明变量之前加一个volatile关键字,然后变量 i 阅读全文
posted @ 2023-04-02 14:42 酷酷- 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 1 前言 上节我们看了一下线程安全的原子性、有序性、可见性,这节我们回到CPU多级缓存的问题,就是各个缓存中一致性的问题,这节我们就来看一下MESI一致性协议。 2 MESI缓存一致性协议 MESI协议也叫做缓存一致性协议,主要是用来进行协调多核CPU的高级缓存的数据一致的。 MESI一致性协议定义 阅读全文
posted @ 2023-03-28 14:53 酷酷- 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 1 前言 上节我们了解了CPU缓存结构以及我们的Java内存模型结构以及JMM的基本指令,我们能感受到的就是线程并发后带来的数据问题、执行问题,也就涉及到我们平时常说的可见性、有序性、原子性,那么这节我们来大概看看这三者的理解。 2 可见性 多个线程同时对某一个共享变量进行操作的时候,存在线程A的操 阅读全文
posted @ 2023-03-28 08:24 酷酷- 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 1 前言 在进行 Java 并发学习的时候,我们需要有个前置基础的概念和知识理清楚,然后才能进行后面深入的学习。这节我们就来看看CPU多级缓存模型以及Java内存模型。 2 CPU多级缓存模型 我们先从CPU的多级缓存架构讲起,下面画个图整体说下CPU多级缓存架构: 2.1 高速缓存的意义 CPU与 阅读全文
posted @ 2023-03-28 07:41 酷酷- 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 1 前言 关键字 volatile 大家平时可能会用到,或者看源码的时候都会遇到,在看这个关键字之前,我们先看点别的,先了解一下系统的CPU多级缓存,方便我们更好的理解。 2 CPU缓存 2.1 CPU缓存的来历 CPU是计算机的大脑,它负责执行程序的指令,而内存负责存数据, 包括程序自身的数据。在 阅读全文
posted @ 2023-03-27 06:44 酷酷- 阅读(170) 评论(0) 推荐(0) 编辑
上一页 1 ··· 37 38 39 40 41 42 43 44 45 ··· 51 下一页