Java
文章平均质量分 85
Java相关
顾秋生
这个作者很懒,什么都没留下…
展开
-
JUC笔记
1 什么是JUC1.1 进程与线程线程是进程的执行单位,一个进程相当于一个服务,每个线程去执行任务1.2 线程状态NEW 新建RUNNABLE 准备就绪BLOCKED 阻塞WAITING 不见不散TIMED_WAITING 过时不候TERMINATED 终结1.3 wait/sleep区别wait是Object对象实例方法、sleep是线程Thread方法wait会释放锁,调用前提是该线程持有锁、sleep不会释放锁,也需要不占有锁才能调用。都可被interrupted方法中断原创 2022-04-20 17:51:53 · 191 阅读 · 0 评论 -
JVM垃圾收集器
1. Serial(新生代收集器)单线程, 新生代标记-复制算法额外内存最小,因为是单线程,在内核数少的情况下,效率很高。运行于客户端的JVM首选2. ParNew(新生代收集器)多线程并行版Serial,标记-复制算法多核心处理器下效率优异,单核处理器环境下不如Serial。JDK7之前,服务端新生代首选垃圾回收器。可以与老年代:CMS回收器配合使用3. Parallel Scavenge(新生代收集器)并行收集的多线程收集器,标记-复制算法侧重于吞吐量区别于ParNew收集器的一原创 2021-08-04 19:31:42 · 88 阅读 · 0 评论 -
CopyOnWriteArrayList源码(一)
CopyOnWriteArrayList是ArrayList的线程安全版,适用于读多写少的并发场景。因为底层是创建新的数组,然后更新引用地址,所以没有扩容相关方法1. CopyOnWriteArrayList类图2. 基础属性序列化private static final long serialVersionUID = 8673264195747942595L;禁止序列化的可重入锁//transient禁止序列化final transient ReentrantLock lo.原创 2021-08-16 14:07:42 · 109 阅读 · 0 评论 -
ArrayList源码详解
1. 类图2. 基本属性 /** * 默认容量 10 */ private static final int DEFAULT_CAPACITY = 10; /** * 用于空实例的共享空数组实例。 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * * 默认容量(10)的空数组,添加第一个元素时,这个数组的容量会扩展为10。原创 2021-08-16 11:21:59 · 379 阅读 · 0 评论