---JAVA---锁相关
文章平均质量分 74
Laputa_SKY
这个作者很懒,什么都没留下…
展开
-
java锁的种类以及辨析(一):自旋锁
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1、自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。public...原创 2018-04-18 11:16:32 · 116 阅读 · 0 评论 -
Java锁的种类以及辨析(二):自旋锁的其他种类
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。2.自旋锁的其他种类上篇我们讲到了自旋锁,在自旋锁中 另有三种常见的锁形式:TicketLock ,CLHlock 和M...原创 2018-04-18 11:18:06 · 110 阅读 · 0 评论 -
Java锁的种类以及辨析
Java锁的种类以及辨析 作者:山鸡锁作为并发共享数据,...转载 2018-04-18 12:07:15 · 109 阅读 · 0 评论 -
Java锁的种类以及辨析(三):阻塞锁
作者:山鸡锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 syn...转载 2018-04-18 12:09:34 · 138 阅读 · 0 评论 -
Java锁的种类以及辨析(四):可重入锁
作者:山鸡锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。四、可重入锁:本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。可重入锁,也叫...转载 2018-04-18 14:57:19 · 129 阅读 · 0 评论 -
自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurrent.atomic.AtomicReference;public class SpinLock { pri...转载 2018-04-18 15:12:35 · 244 阅读 · 0 评论 -
自旋锁和缓存一致性
http://xw-z1985.iteye.com/blog/20555521、两种自旋锁的实现:TAS和TTAS1.1 TASclass TasLock { AtomicBoolean state = new AtomicBoolean(false); void lock() { while (state.getAndSet(tr...转载 2018-04-18 15:16:59 · 236 阅读 · 0 评论 -
(2)CLH锁
原文地址:http://xw-z1985.iteye.com/blog/20643721、为什么要引入CLH锁 在前一篇文章中,介绍了TAS、TTAS两种自旋锁。这两种锁的缺点是:任何一个处理器每一次对锁成功的访问(getAndSet(true)和set(false)任意一个方法的调用),都会将其他处理器的cache中的缓存失效掉。这样会导致以下后果:其他处理器无法再采用局部自旋的方式...转载 2018-04-18 15:18:57 · 180 阅读 · 0 评论 -
(3)MCS锁
http://xw-z1985.iteye.com/blog/20646441、 为什么要引入MCS锁? 在NUMA架构体系下,访问remote memory的速度要远远慢于访问local memory的速度。如下图所示(引自Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy &...转载 2018-04-18 15:19:57 · 158 阅读 · 0 评论