随笔 - 229
文章 - 0
评论 - 10
阅读 -
26万
随笔分类 - jdk8
图片与base64互转
摘要:import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import java.io.*; /** * @Author ZhengQinfeng * @Date 2020/6/18 21:31 * @dec */ public cl
阅读全文
队列篇之使用数组模拟一个队列
摘要:队列是一个有序列表, 可以使用数组实现, 也可以使用链表实现 队列遵守先进先出的原则 1. 下面使用数组模拟一个队列 public class ArrayQueueDemo { public static void main(String[] args) { ArrayQueue queue = n
阅读全文
JDK8 HashMap源码分析
摘要:HashMap需要注意以下几方面 (1) HasMap底层是用Node数组table存储数据, 它是采用懒加载的方式初始化的, 初始长度16, 加载因为0.75, 每次扩容2倍, 在扩容时,移动节点都是采用尾插法. 而JDK8之前都是采用的头插法(这里有个典型的问题,多线程可能死循环). (2) J
阅读全文
ReentrantReadWriteLock源码分析笔记
摘要:ReentrantReadWriteLock包含两把锁,一是读锁ReadLock, 此乃共享锁, 一是写锁WriteLock, 此乃排它锁. 这两把锁都是基于AQS来实现的. 下面通过源码来看看ReentrantReadWriteLock是如何做到读读共享,读写互斥的. 1. 测试代码 import
阅读全文
公平锁与非公平锁
摘要:在使用ReentrantLock创建锁实例时,即可以创建公平锁,也可以创建非公平锁.默认是创建非公平锁. Lock lock = new ReentrantLock(true); // 创建一个公平锁 无论是创建公平锁,还是创建非公平锁,其底层都是使用AQS来实现的, 唯一的不同,就是非公平在加入C
阅读全文
AQS源码分析笔记
摘要:经过昨晚的培训.对AQS源码的理解有所加强,现在写个小笔记记录一下 同样,还是先写个测试代码,debug走一遍流程, 然后再总结一番即可. 测试代码 import java.util.concurrent.CyclicBarrier; import java.util.concurrent.lock
阅读全文
Callable使用示例
摘要:之前工作中也有使用过Callable,但是却没有使用Thread对象去操作过,今晚 小组培训,涨知识了,现特意记录一下,以免忘记. 先看一下Thread的构造器 可以看到,Thread类并没有提供参数是Callable的构造器, 但是Runnable是有的. 再看下面类关系图 所以,我们在使用Thr
阅读全文
ThreadLocal源码分析
摘要:1.测试代码 public class ThreadLocalTest { public static void main(String[] args) { ThreadLocal<String> threadLocal = new ThreadLocal<>(); threadLocal.set(
阅读全文
Stream学习笔记
摘要:1. 创建Stream实例的五种方式 2. Stream常用Api
阅读全文