源码解析
文章平均质量分 79
啊啊你是zzz
失业中,武汉求大佬内推
展开
-
LinkedBlockingQueue源码解析
public void put(E e) throws InterruptedException { if (e == null) throw new NullPointerException(); // Note: convention in all put/take/etc is to preset local var // holding count negative...原创 2019-12-11 21:43:48 · 97 阅读 · 0 评论 -
ArrayBlockingQueue源码解析
先说下 put 和 take 这2个 会让线程 处于watting状态的方法 arraybockingQueue 是基于 数组 和 读写指针 还有 condition 实现的 condition 是aqs的内部类 aqs 内部类中 Node 可以理解为 对象监视器monitor中的 entry set 入口集 而condition 可以理解为 wait set 等待集 不过 condition ...原创 2019-12-11 14:16:57 · 125 阅读 · 0 评论 -
CyclicBarrier源码解析
CyclicBarrier 是可以复用的 ,但是如果出现 等待超时, 或者 出现每轮 执行完 执行的对应的 runnable 任务 出现异常 那么后续 线程 统统都会抛出异常 public int await() throws InterruptedException, BrokenBarrierException { try { // go to return ...原创 2019-12-10 17:04:50 · 132 阅读 · 0 评论 -
CountDownLatch源码解析
CountDownLatch countDownLatch=new CountDownLatch(20); Sync(int count) { setState(count); // 首先创建时的 计数 就是等待多少个线程通过 countDown后 await的线程被 // 唤醒 所以 这个state = 创建时的个数 那么 每次relase 一次就减去1 } co...原创 2019-12-10 11:57:00 · 99 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码解析
在线程池中 如下二进制状态, 默认是RUNNING 高3位 保留 线程池状态,低29位保留线程池中 线程的数量 11 10000 00000 00000 00000 00000 00000 (-1<<29) RUNNING 00 00000 00000 00000 00000 00000 00000 SHUTDOWN 00 10000 00000 00000 00000...原创 2019-12-08 15:04:30 · 151 阅读 · 1 评论 -
ReentrantLock解析
该锁是 独占锁 但是分为 公平 非公平 公平 指的是 先进先出的概念 而 非公平 只要state=0 不管 有没有排队 都能有机会cas拿到锁 AQS 主要负责了 维护 Node双向链表 等待的节点 的操作,获取 更改 state等 ReentrantLock 源码相对比较简单 读者 可以 读过之后再去看 readWriteLock 会亲轻松很多 public void lock() { ...原创 2019-12-02 18:15:38 · 111 阅读 · 0 评论