![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
chaosbead
这个作者很懒,什么都没留下…
展开
-
「BATJ面试系列」并发编程之happens-before详解
从JDK 5 开始,JMM使用happens-before的概念来阐述多线程之间的内存可见性。 在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须存在happens-before关系。 happens-before原则非常重要,它是判断数据是否存在竞争、线程是否安全的主要依据,依靠这个原则,我们解决在并发环境下两操作之间是否可能存在冲突的所有问题。下面我们就一个简单的例...原创 2019-06-13 11:09:59 · 318 阅读 · 1 评论 -
「BATJ面试系列」并发编程之ThreadLocal
在面试环节中,考察"ThreadLocal"也是面试官的家常便饭,所以对它理解透彻,是非常有必要的. 有些面试官会开门见山的提问: “知道ThreadLocal吗?” “讲讲你对ThreadLocal的理解” 当然了,也有面试官会慢慢引导到这个话题上,比如提问“在多线程环境下,如何防止自己的变量被其它线程篡改”,将主动权交给你自己,剩下的靠自己发挥。 那么ThreadLocal可以做什么,在了...原创 2019-06-13 19:15:29 · 207 阅读 · 0 评论 -
「BATJ面试系列」并发编程之CAS源码分析
点关注,不迷路;持续更新Java相关技术及资讯!!! CAS的全称为Compare And Swap,直译就是比较交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,其实现方式是基于硬件平台的汇编指令,在intel的CPU中,使用的是cmpxchg指令,就是说CAS是靠硬件实现的,从而在硬件层面提升效率。 CSA 原理 利用CPU的CAS指令,同...原创 2019-06-13 19:36:01 · 209 阅读 · 0 评论 -
「BATJ面试系列」并发编程之AQS
点关注,不迷路;持续更新Java相关技术及资讯!!! 1. AQS简介 在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排队,等待通知等等一些底层的实现处理。AQS的核心也包括了这些方面:同步队列,独占式锁的获取和释放,共享锁的获取和释放以及可中断锁,超时等待锁获取这些特性的实现,而这些实际上...原创 2019-06-13 20:20:37 · 354 阅读 · 0 评论 -
「BATJ面试系列」并发编程(一)
作为一个合格的Java程序员,必须要对并发编程有一个深层次的了解,在很多互联网企业都会重点考察这一块。可能很多工作3年以上的Java程序员对于这一领域几乎没有太多研究。所以在接下来内容中,我会将并发编程整个领域由浅到深做非常全面的分析。 内容导航 从操作系统的发展了解进程、线程模型 线程的优势 线程的生命周期 线程的应用场景 了解进程、线程模型 每次学习一个新技术,我会先去了解这个技术的背景,...原创 2019-06-11 11:40:38 · 2204 阅读 · 0 评论 -
「BATJ面试系列」并发编程之synchronized实现原理
在java中存在两种锁机制,分别是synchronized和Lock。下面我会总结一下synchronized的实现原理和涉及的一些锁优化机制。 synchronized的使用 synchronized 的作用: 确保线程互斥的访问代码块,同一时刻只有一个方法可以进入到临界区 保证共享变量的修改能及时可见 有效解决重排序问题 synchronized 使用方式: 修饰实例对象中的实例方法,锁...原创 2019-06-12 12:07:18 · 187 阅读 · 0 评论