打赏
摘要: 继续讲CAS算法,上篇文章我们知道,CAS算法底层实现,是通过CPU的原子指令来实现。 那么这里又有一个情景: 话说,有一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且two进行了一些操作变成了B,然后two又将V位置的数据变成A,这时候线程one进行CAS操作发现内 阅读全文
posted @ 2019-06-13 21:19 gyc567 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 上篇文章,我们主要讲了解决多线程之间共享数据的核心问题和解决方案,也讲了锁的简单分类。 那么,这把锁,我们应该怎么去实现呢?如果你是java语言设计者,你又会怎么去设计这个线程锁呢? 直觉告诉我们,我们可以设计一个对象或属性,用来代表锁。比如,你把共享数据区当成抽屉,那这个抽屉就可设计出有锁,有钥匙 阅读全文
posted @ 2019-06-13 11:31 gyc567 阅读(604) 评论(1) 推荐(1) 编辑
摘要: 在java高并发编程,有几个很重要的内容: 1.CAS算法 2.CPU重排序 3.缓存行伪共享 我们先来说说高并发世界中的主要关键问题是什么? 是数据共享。 因为多线程之间要共享数据,就会遇到各种问题。如下图: 如果两个线程同时写入,那怎么保证数据的一致性?是线程1先写,还是线程2先写,这是个问题。 阅读全文
posted @ 2019-06-13 10:39 gyc567 阅读(630) 评论(1) 推荐(0) 编辑