摘要: 利用了AtomicInteger的compareAndSet方法 public class CASLock { private AtomicInteger value = new AtomicInteger(); Thread lockThread ; public boolean tryLock( 阅读全文
posted @ 2019-11-09 21:35 踏月而来 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 对引用类型的原子性操作 /** * *对引用变量的原子操作 note: *在java中对引用类型的变量,赋值是原子性的,为什么还要有atomicReference,假如要对一个引用类型进行比较,设置等多于一个的操作,还要他们保证原子性时,就要用到 *atomicReference */ public 阅读全文
posted @ 2019-11-09 15:32 踏月而来 阅读(1211) 评论(0) 推荐(0) 编辑
摘要: 什么是ABA问题 在CAS算法中,需要取出内存中某时刻的数据(由用户完成),在下一时刻比较并交换(CPU保证原子操作),这个时间差会导致数据的变化。 1、线程1从内存位置V中取出A2、线程2从内存位置V中取出A3、线程2进行了写操作,将B写入内存位置V4、线程2将A再次写入内存位置V5、线程1进行C 阅读全文
posted @ 2019-11-09 12:29 踏月而来 阅读(3388) 评论(0) 推荐(0) 编辑
摘要: 1 互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 2 同步是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。 3 同步其实已经实现了互斥,所以同步是一种更为复杂的互斥。 4 互斥是一种特殊的同步。 阅读全文
posted @ 2019-11-09 09:43 踏月而来 阅读(1845) 评论(0) 推荐(0) 编辑