Java 进阶之路:从 Lock 指令前缀切入,解读 Java Volatile、CAS 及 Automic 包

作者/分享人:Dora
向 Ta 提问
半个全栈工程师,目前专注于分布式系统相关的研发。喜欢探索新的领域,曾在几大互联网公司从事算法、物联网、智能控制方面的工作,深耕Java技术栈。

在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。Java 语言为我们提供了解决上述问题的方法:

  1. 可见性:volatile、final 以及锁(synchronized、lock)实现;
  2. 原子性:JUC 包提供了一些原子类(如AutomicInteger)、锁实现;
  3. 有序性:volatile、锁实现。

初见之下,锁如同一把“万能钥匙”,但其缺陷也很明显——较“重”,并不适合简单的应用场景,比如,多线程环境下保证共享变量 i++ 操作的原子性,加锁可以实现,但有点“牛刀杀鸡”的味道。因此,Java 提供了更“轻”的方案:volatile、CAS 和 Automic 系列原子类。三者联系紧密,volatile 和 CAS 都是基于 LOCK 指令前缀实现的,Automic 系列原子类是基于 volatile 和 CAS 实现的。

本场 Chat 主要内容:

  1. 计算机和 JVM 内存模型简介;
  2. LOCK 指令介绍,“锁总线”、“锁缓存”实现原理;
  3. volatile 保证可见性、有序性的原理;
  4. CAS 原子性的实现原理;
  5. Automic 系列原子类实现原子操作的原理。
已有159人预订
预订达标
文章出炉
     
10月07日
10月21日
预订后,您将在10月21日之前获得一篇专享文章,您还将获得一张Dora的读者圈Pass
请务必添加GitChat服务号以查看活动进度及获取活动通知。
退款保证:
• 10月07日前,预订人数未达标,您将获得全额退款。
• 作者未按时完成文章,您将获得全额退款。
你可能还喜欢
1小时搞懂 Git 版本控制
Fengy
基于深度学习的计算机视觉技术在无人驾驶中的应用
美团技术团队
AutoML 在推荐系统中的应用
第四范式技术团队
今夜,我们聊聊中国的开源
开源社
玩转 Python 网络爬虫:QQ 音乐全站爬虫开发
Xy
再谈基于 Kafka 和 ZooKeeper 的分布式消息队列原理
应书澜
统一认证与授权在微服务架构中的设计与实战
CANGWU
Elasticsearch 实战应用系列
桃花惜春风
老系统微服务改造经验谈
老顽童
我们如何衡量一个微服务实施的成功
顾宇
如何构建游戏安全护城河
网易移动安全技术团队
奇葩代码虐我千百遍,我却待它如初恋
Spencer
如何半小时搞定3小时的工作&漫谈极速提升开发效率
是我是我就是我
Java 程序员必备:并发知识系统总结
SnailClimb
Java NIO 框架 Netty 之美:源码剖析之一
追梦
微信扫描登录