自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 AQS的应用:ReentrantLock源码分析

AQS: AbstractQueuedSynchronizer,抽象队列同步器。用来实现锁或其他同步器组件的公共基础部分的抽象实现,是重量级基础框架及整个JUC体系的基石,用于解决锁分配给“谁”的问题。常见的同步组件如ReentrantLock、ReentrantReadWriteLock、CountdownLatch等都是基于AQS实现的(通过内部类extend AQS)。AQS内部包含一个CLH变体队列,抢不到锁的线程将会被封装成一个Node并进入此队列,而此处的锁实际上就是state变量(类型)。一旦

2022-06-20 22:48:13 112 2

原创 JMM如何解决重排序问题

随着现代CPU从提升单核性能转变到提升多核性能,并发编程显得愈发重要。通过多线程的协同工作使得程序的执行效率更高!同时,计算机软硬件为了提升程序执行效率,对指令做了重排序操作,分为三种类型:Java内存模型JMM是一个抽象概念,涵盖了缓存、写缓冲区、寄存器以及其它硬件和编译器优化,用于解决Java多线程对共享数据的读写一致性问题。在JMM中变量的值从线程A到线程B要经过两个阶段:线程A将工作内存中更新过的共享变量刷到主内存中;线程B从主内存中读取线程A更新过的变量。基于上述软硬件层面的重排序操作以及JMM内

2022-06-20 22:41:31 141

原创 FeignClient源码简单分析

示例的FeignClient代码HelloClient.java@FeignClient(name = "helloClient", url = "localhost:8080")public interface HelloClient { @RequestMapping(method = RequestMethod.GET, value = "/hello/helloworld") String getNames(); @RequestMapping(method = Re

2021-02-22 12:27:44 408 2

原创 Spock入门 - 快速开始&基础语法

环境搭建配置pom.xml依赖<dependencies> <!-- 若本机安装了groovy,无需此依赖 --> <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <version>2.4.15</versio

2020-05-19 11:30:53 1915

原创 ConcurrentHashMap源码分析

ConcurrentHashMap 源码分析 个人理解总结

2020-03-27 17:16:42 146

原创 HashMap核心源码

put(K key, V value)hash(key)-扰动函数将指定的key存入map中,重复则更新,另外还有一个putIfAbsent()方法则是遇到重复key不更新。public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}注意到里面的hash(key)方法,实...

2020-03-22 22:12:39 108

原创 ArrayList源码分析

简介这是简介构造函数这里面涉及到三个数组,EMPTY_ELEMENTDATA,DEFAULTCAPACITY_EMPTY_ELEMENTDATA,elementData,其中前两个数组主要用于在初始化以作区分,详见构造函数的区别。其中elementData是数据实际存储的数组,它使用transient关键字创建。在这儿有三种构造函数:MyArrayList(int initialCap...

2020-03-15 16:57:54 104

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除