Java并发
文章平均质量分 77
insomsia
这个作者很懒,什么都没留下…
展开
-
细数synchronized与Lock的异同
文章目录前言一、存在层次上二、获取锁的方式三、释放锁的方式四、锁的状态五、锁的类型六、适用场景总结 前言 最近面试经常遇到过几次的一个问题就是,synchronized与Lock的区别? 感觉每次答得都不够全面,不是漏了这就是漏了那的,为了加深记忆特地追加一篇博客来记录(我可真是个小机灵鬼)。 为了详细的列举出这俩货的异同,这里分一下几个角度来对比: 一、存在层次上 synchronized:就是Java在JVM层次上提供的一个关键字,能直接拿来在方法或者代码块上面用,此时被标注的方法称为同步方法,被标原创 2021-04-06 17:37:52 · 187 阅读 · 0 评论 -
原子类如何保证操作的原子性?
一、什么是原子性? 所谓原子操作,就是"不可中断的一个或一系列操作" 。 硬件级的原子操作: 在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是&a原创 2019-03-09 14:19:19 · 3028 阅读 · 0 评论 -
ReentrantLock源码解读
ReentrantLock构造函数: // 无参构造函数,默认非公平 public ReentrantLock() { sync = new NonfairSync(); } // 有参构造函数,参数:是否公平 public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();...原创 2019-03-25 16:17:15 · 291 阅读 · 0 评论 -
Java多线程之AbstractQueuedSynchronizer
1、静态不可变内部类Node: static final class Node { static final Node SHARED = new Node(); static final Node EXCLUSIVE = null; static final int CANCELLED = 1; static final int SIGNAL = -1; ...原创 2019-03-25 15:08:45 · 259 阅读 · 0 评论 -
CountDownLatch用法极其源码浅析
1、构造实例 CountDownLatch countDownLatch = new CountDownLatch(3); // 构造方法 public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count < 0"); this.sync = new S...原创 2019-06-15 14:58:07 · 116 阅读 · 0 评论 -
线程池源码层级浅析
最顶层是一个Executor接口,它只有一个方法: public interface Executor { void execute(Runnable command); } ExecutorService扩展了Executor,添加了操控线程池生命周期的方法,如shutDown(),shutDownNow()等,以及扩展了可异步跟踪执行任务生成返回值Future的方法,如submit(...原创 2019-06-10 11:05:40 · 117 阅读 · 0 评论