锁
文章平均质量分 92
如果悲伤有颜色,那么一定是黄昏
未来可能转战掘金平台,请关注https://juejin.cn/user/1337472272565623
展开
-
JUC·AQS·ReentrantLock独占模式源码解析
Aqs源码解析从ReentrantLock入手看AQS独占模式实例化ReentrantLock在实例化ReentrantLock时,同时实例化了内部的非公平Aqs的类NonfairSync(默认实现为非公平同步类)lock方法当我们想要进行同步操作时,会调用lock方法,lock方法实际调用的为Aqs中的抽象方法Lock,这里的具体实现为NonfairSync的lock方法接下来我们来看一下,非公平的lock方法具体做了什么,如下图当我们尝试调用NonfairSync的lock时原创 2021-01-11 15:18:27 · 123 阅读 · 1 评论 -
分段锁的应用(JUC Map,LongAdder)
分段锁的应用分段锁顾名思义就是只锁一段而不是全局的加锁,有效提高了在多线程情况下的速度1.ConcurrentHashMapConcurrentHashMap之所以效率高又是线程安全的,主要是使用了分段锁和cas,很多文章都有不细说了使用了分段锁的代码段://这里锁的就是数组中的单向链表或红黑树的头结点,put时hash到不同的数组中的链表锁的对象是不同的可以实现并行put,只有被分配到...原创 2020-03-26 14:59:52 · 850 阅读 · 0 评论 -
AQS ReentrantLock源码实现
AQS ReentrantLock从ReentrantLock构造方法开始看public ReentrantLock() { sync = new NonfairSync(); }默认的构造方式是非公平方式实现(公平非公平就是是不是按线程顺序执行),aqs的锁机制由sync类控制,sync继承了AbstractQueuedSynchronizer,AbstractQ...原创 2020-01-19 17:52:22 · 143 阅读 · 0 评论 -
可重入锁ReentrantLock打印H20
可重入锁ReentrantLock使用示例这里只介绍Condition的等待通知机制,其他重入锁相关理论去参考其他的博客,首先ReentrantLock和synchronized都是同步锁,只不过前者需要手动释放,后者自动释放,所以在正常项目中后者使用偏多,但是想要更灵活的使用还是推荐ReentrantLock,如图一个lock可以创建多个Condition,每个Condition使用前需要获取...原创 2019-08-28 16:03:10 · 166 阅读 · 0 评论