Mickey 小站

尘世迷途小码农

CompletableFuture Source

CompletableFuture 源码分析

本来想自己写一下的,发现已经有别的同学总结过了 JUC源码解析 CompletableFuture 我认为,这个类,掌握了 Completion 的链接,然后对应 complete 和 whenCompleteAsync 两个函数单步调试即可

autumn interview

秋招面试总结

秋招也要陆陆续续的开始了,今天我面试了第一家公司,所以这篇博客来记录一下 快手 —— 数据研发工程师(offer) 7.29 直通终面 + hr面,8.9 oc 因为之前暑期三面全过,因此这次提前批,算是直通终面吧,一轮长达一个半小时的技术面之后,进行了 hr 面试 一个 uid,p_date 的 hive 表,...

ScheduledThreadPoolExecutor Source

ScheduledThreadPoolExecutor 源码分析

ScheduledThreadPoolExecutor 可以用于注册任务,这些任务会在将来的某些阶段被调度触发(这篇博客只讲主要的思路) ScheduledThreadPoolExecutor 继承于 ThreadPoolExecutor,对 ThreadPoolExecutor 感兴趣的可以移步ThreadPoolExecutor 源码分析,ScheduledThreadPoolExec...

Deque Source

Deque 源码分析

这篇文章我们来讲一下 ArrayDeque 和 LinkedBlockingDeque 的源码 ArrayDeque 属性 // ArrayDeque 使用数组来存储元素,数组的长度也是 2 的幂次方 // 在 head 和 tail 更改的时候,使用除留余数法来替代取余操作 transient Object[] elements; // 双端队列头部 transient int h...

BlockingQueue Source

BlockiBlockingQueueng 源码分析

这篇 blog 我们来讲一下 BlockingQueue 的几个子类的源码 ArrayBlockingQueue ArrayBlockingQueue 是一个定长的阻塞队列,可以用于实现最基本的生产者 - 消费者模型 属性 // 存放队列元素 final Object[] items; // 下一个 take,poll,peek,remove 操作的元素下标,这个是会循环的,当 t...

FutureTask Source

FutureTask 源码分析

这篇 blog 我们来讲一下 FutureTask 的源码,FutureTask 是 java 实现异步编程的基础 public class FutureTask<V> implements RunnableFuture<V> ... public interface RunnableFuture<V> extends Runnable, Futur...

ReentrantReadWriteLock Source

ReentrantReadWriteLock 源码分析

ReentrantReadWriteLock 源码分析(基于Java 8) 👆这篇 blog 讲解的非常清楚,推荐给大家,这里我自己记录一下个人的感悟 ReentrantReadWriteLock 创建了 ReadLock 类和 WriteLock 类 读锁和写锁是互斥的,写锁不会抢占读锁 当线程获取写锁的时候,是可以继续获取读锁的,这是锁降级,反之则不行,会造成死锁 ...

CyclicBarrier Source

CyclicBarrier 源码分析

这篇 blog 我们来讲一下 CyclicBarrier 的源码,CyclicBarrier 依赖 ReentrantLock 实现功能,感兴趣的同学可以先看看 ReentrantLock 源码分析 CyclicBarrier 用于多个线程的互相等待,当多个线程都做好了准备后,一同开始运行,可以用于系统的初始化,当多个子线程都申请好了资源之后,系统启动 属性 // CyclicBarr...

ReentrantLock Source

ReentrantLock 源码分析

这篇 blog 我们来讲一下 ReentrantLock 的源码,ReentrantLock 是一种依赖 AQS 的可重入排他锁,和 Semaphore 类型,ReentrantLock 也分为公平和非公平两种 Sync Sync 一个抽象类,继承了 AQS abstract static class Sync extends AbstractQueuedSynchronizer { ...

Semaphore Source

Semaphore 源码分析

这篇 blog 我们来讲一下 Semaphore 的源码,Semaphore 允许指定数量的线程同时运行,Semaphore 同样使用 AQS 的共享锁实现 Sync 类 abstract static class Sync extends AbstractQueuedSynchronizer { Sync(int permits) { setState(perm...