JUC同步器框架AbstractQueuedSynchronizer源码图文分析 前提 Doug Lea大神在编写JUC( )包的时候引入了 ,Abstract Queued Synchronizer,也就是"基于队列实现的抽象同步器",一般我们称之为AQS。其实Doug Lea大神编写AQS是有严 ...
分类:
其他好文 时间:
2019-04-07 12:46:17
阅读次数:
139
1、直接操作内存,使用Unsafe 这个类 2、使用 getIntVolatile(var1, var2) 获取线程间共享的变量 3、采用CAS的尝试机制(核心所在),代码如下: 可以看到这个do .... while {!this.compareAndSwapInt(var1, var2, var ...
分类:
其他好文 时间:
2019-04-06 09:20:57
阅读次数:
120
Java 多线程 volitile 和 atomic 关键字 尝试运行以上代码,发现thread永远也无法发现key0的x被改变 所以这个时候需要加上volitile关键字 具体原因是java中每个线程都有工作内存,以及主存 我的理解就是不加volitile,线程读写变量是先在自己的工作内存中处理, ...
分类:
编程语言 时间:
2019-04-05 20:07:59
阅读次数:
200
锁的种类 独享锁 VS 共享锁 独享锁:锁只能被一个线程持有(synchronized) 共享锁:锁可以被多个程序所持有(读写锁) 乐观锁 VS 悲观锁 乐观锁:每次去拿数据的时候都乐观地认为别人不会修改,所以不进行加锁操作。乐观锁适用于多读的应用类型。(CAS,Atomic) CAS(Compar ...
分类:
编程语言 时间:
2019-04-05 00:16:09
阅读次数:
183
最近在看 java.util.concurrent.atomic 包下的AtomicInteger源码发现它是利用CAS来实现原子操作、Volatile保证元素的可见性来实现无锁下的线程安全。 决定深入了解一下CASMySql中的MVCC(多并发版本控制)中的乐观锁也是通过CAS机制和版本号实现无锁 ...
分类:
其他好文 时间:
2019-04-04 12:53:55
阅读次数:
177
jdk_7u4 java.util java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util.jar java.util.logging java.util.prefs java.uti ...
分类:
编程语言 时间:
2019-04-03 22:35:39
阅读次数:
199
本次样例从单机层面上,采用拦截器的方式对请求限流。 资源:https://github.com/xiaozhuanfeng/rateLimiterProj 工程结构: pom.xml application.properties 1、新建抽象拦截器 2、新建RateLimiter Bean 3、新建 ...
分类:
其他好文 时间:
2019-03-29 18:53:33
阅读次数:
90
volatile本身并不保证原子性和线程安全,它只保证线程可见性。比如有两个应用场景,1在单例模式的双重检测中用 2在多个线程读里,用于判断标志位 {因为redis是单线程,所以它的原子操作incre加一操作,才能保证线程安全。而java并发包中的atomic是线程安全的} 下图例子即表明,多线程时 ...
分类:
其他好文 时间:
2019-03-27 21:28:16
阅读次数:
187
import java.util.concurrent.atomic.AtomicInteger; public class Test { public static void main(String[] args){ } } interface Future{ T get() throws Int... ...
分类:
其他好文 时间:
2019-03-27 10:47:03
阅读次数:
136
1. 直接用CAS中的AtomicInteger package concurency.chapter13; import java.util.concurrent.atomic.AtomicInteger; / @auther draymonder / public class PrintOddA ...
分类:
编程语言 时间:
2019-03-20 09:13:38
阅读次数:
326