随笔分类 - JUC
摘要:手写MiniBlockingQueue阻塞队列 BlockingQueue接口 package com.xiaozhou; public interface BlockingQueue<T> { void put(T element) throws InterruptedException; T t
阅读全文
摘要:AQS独占模式(基于ReentrantLock公平锁) — 源码解析 一、 基本概念 AQS全称 AbstractQueuedSynchronizer, 是JUC包下的一个抽象类。可以说它是整个JUC并发的基础框架。非常重要。在ReentrantLock, ReentrantReadWriteLoc
阅读全文
摘要:手写mini版ReetrantLock(AQS公平锁) package com.xiaozhou; import sun.misc.Unsafe; import java.lang.reflect.Field; import java.util.concurrent.locks.LockSuppor
阅读全文
摘要:JUC 线程池 一、基本概念 提到线程池,我们首先会想到创建多线程的4中方式: 直接继承Thread,重写run方法 实现Runnable接口,传入Thread构造中 new FutureTask( Runnable实现/Callable实现) → new Thread(futureTask).st
阅读全文
摘要:ThreadPoolExecutor添加worker源码解析——addWorker 该方法的主要目的就是为了向线程池中创建线程(worker),并执行线程。 private boolean addWorker(Runnable firstTask, boolean core) { retry: fo
阅读全文
摘要:FutureTask(未来任务) 一、前情回顾(重要) 首先我们先回顾一下多线程创建的方式 直接继承Thread方式 实现Runnable 方式 实现Callable方式 线程池方式 这四种方式主要分为两类:没返回值的(1,2) 有返回值的(3,4) 没返回值的相信已经烂熟于心了。这次我们讲讲有返回
阅读全文
摘要:ConcurrentHashMap(jdk1.8) 底层操作 //数组对象 = 头对象(8bytes) + 指针对象(4bytes) + 数组长度(4bytes) + 数据(xxxbytes) Class<?> ak = Node[].class; //Node[]Class 对象ak ABASE
阅读全文
摘要:HashMap(JDK8) 大总结 数据结构 Node数组 + 链表 + 红黑树 构成 成员变量及内部类 //默认数组的初始化长度 AKA 16 1<<4 10000 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 //数组
阅读全文
摘要:JUC基础 多线程编程基础 多线程编程步骤(上) 第一步 创建资源类,在资源类创建属性和操作方法 第二步 创建多个线程,调用资源类的操作方法 多线成编程步骤(中) //线程间通信 第一步 创建资源类,在资源类创建属性和操作方法 第二步 操作方法中分为 判断 干活 通知 第三步 创建多个线程,调用资源
阅读全文