java源码分析
文章平均质量分 77
通过源代码层层解刨,逐层分析,深入理解原理及机制
skindow
我们是大自然的搬运工
展开
-
ThreadLocal源码分析
一. 用途 多个线程存在并行访问一个非线程安全的对象时,并且无需共享给其他线程使用,这个时候可以用Thread给每个线程产生一个每个线程独立的副本,各副本之间互不影响 二. 源码解读 set 方法 public void set(T value) { Thread t = Thread.currentThread(); //每个Thread类 都有一个ThreadLocalMap成员变量 ThreadLocalMap map = getMap(t)原创 2021-03-08 11:54:13 · 312 阅读 · 0 评论 -
java1.8 ArrayList源码解读
概述 在日常使用当中,ArrayList使用率非常频繁,它基于数组的线性结构,由于添加时都是向末端添加且是连续的所以它表现为有序性,每个元素都对应一个下标,通过下标来获取数据,所以时间复杂度表现为O(1),不受元素的多少影响。在存储上,它是连续性的,所以在存放ArrayList时,需要一块没有碎片的完整的内存区域用来存放ArrayList,并且该内存的大小需要大于等于ArrayList的大小。 ...原创 2019-08-21 18:11:03 · 159 阅读 · 0 评论 -
AQS 独占式锁和条件锁ReentrantLock 和 Condition 带你深入了解原理及源码分析
ReentrantLock 构造图 构造函数 /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code ReentrantLock(false)}. */ //构建一个非公平锁 public ReentrantLock() { sync = new NonfairSync(); } /**原创 2021-03-09 16:54:07 · 258 阅读 · 0 评论 -
AQS CountDownLatch共享锁源码分析原理解读
说明 建议先了解ReentrantLock源码,这里有些地方在上期介绍ReentrantLock源码时已经说过了,这里就不过多赘述了,见谅。 CountDownLatch CountDownLatch 主要是记录线程满足某个条件时,去唤醒主线程(被await的线程)。下面看一个demo DEMO package com.skindow.sql; import java.util.concurrent.CountDownLatch; /** * @ Author :syc. * @ Date原创 2021-03-12 15:48:31 · 209 阅读 · 0 评论 -
java1.8 HashMap源码深入解读
参考文章:https://blog.csdn.net/v123411739/article/details/78996181 https://blog.csdn.net/hzau_itdog/article/details/86085344 概述 在1.8版本之前一直是数组加上链表的结构,1.8版本引入了红黑树,也就是用空间来换取时间,所以现在的结构就变成了数组+红黑树+链表 前言: 先了解以下...原创 2019-08-22 17:07:41 · 523 阅读 · 0 评论 -
AQS Semaphore共享锁源码分析原理解读
用途 设置一定数量的资源,只有获取到资源的线程才会执行下去,否则会一直等待,和ReentrantLock不同的是,ReentrantLock只允许一个线程获取资源,而Semaphore允许多个线程获取到资源 DEMO package com.skindow.sql; import java.util.concurrent.Semaphore; /** * @ Author :syc. * @ Date :Created in 16:03 2021/3/12 * @ Descri原创 2021-03-15 09:36:14 · 314 阅读 · 0 评论 -
HashSet源码分析
1. 无参构造方法HashSet() public HashSet() { map = new HashMap<>(); } 可以看出HashSet是内部通过HashMap来实现的,关于HashMap源码分析可以看我写的这篇文章 HashMap源码分析 2. 有参构造方法HashSet(Collection<? extends E> c) public HashSet(Collection<? extends E> c) {原创 2021-03-09 09:37:15 · 134 阅读 · 0 评论