自定义博客皮肤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)
  • 收藏
  • 关注

原创 Java:HashMap(JDK1.8)

在本篇主要整理一下 1.8 的 HashMap 进行分析,主要从以下方面: 存储结构 扩容机制 基本属性 下面列出 HashMap 中的属性值并加以节是 // 部分常量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 初始大小 16 static final int MAXIMUM_CAPACITY = 1 << 30; // 最大容量 static final float DEFAULT_LOAD_FAC

2021-11-03 12:42:26 181

原创 ReentrantLock :可重入锁

参考链接: https://www.bilibili.com/video/BV1ta4y1H73X 需要具备 AQS 知识 可重入指的是单个线程执行时重新进入同一个子程序仍是线程安全的。 如果是不可重入,若 A 获得锁,要再次请求该锁时就会造成死锁 简单来说,就是一个线程可以不用释放即可重复获得该锁 n 次,释放时响应释放 n 次。 那下面就来讲讲 RenentrantLocak 这一可重入锁的实现。 首先来看一下 RenentrantLocak 的继承关系,其实现了 Lock 接口,即遵循 Lock

2021-10-29 20:52:48 128

原创 AQS - 抽象同步队列:独占锁的实现

文章目录属性int state共享锁 和 独占锁(排他锁)Node head & Node tailNode方法(以独占模式为例)tryAcquire(int arg)acquire(int arg)addWaiter(Node.EXCLUSIVE), arg)acquireQueued(final Node node, int arg)boolean tryRelease(int arg)boolean release(int arg)unparkSuccessor(Node node) 参考链接

2021-10-29 17:24:42 146

原创 浅析 synchronized 底层

synchronized 是 Java 的关键字之一,提供一种原子性的内部锁,Java 中的每个对象都可以把它当作一个同步锁使用,这种 Java 内置的使用者看不到的锁为内部所,或叫监视器锁。 文章目录synchronized 内存语义Monitor简介特点对象内存模型中的锁标记synchronized 内存语义Monitor简介特点对象内存模型中的锁标记参考链接参考链接 synchronized 内存语义 进入 synchronized块,即是当前线程会从自己的工作内存中清除 synchronized块中

2021-10-28 19:51:40 106

原创 ThreadLocal & ThreadLocalRandom

文章目录ThreadLocal测试示例ThreadLocal 实现方式可被子线程继承的 InheritableThreadLocalsThreadLocalRandomThreadLocalRandom 实现 ThreadLocal 并发下,多线程对共享变量进行操作,为保证线程安全,通常要控制好各线程的同步情况,最直接的办法是给当前共享变量加锁。 有没有一种方法使得创建一个变量后,每个线程对该变量的访问都是在自己的线程空间中的呢?这就是 ThreadLocal。 测试示例 public static vo

2021-10-26 20:45:45 124

原创 Java 线程基本操作

文章目录实现方式线程的基本操作[共享变量].wait()[共享变量].notify()[线程].join()[线程].sleep()[线程].yield()线程中断 实现方式 实现 Runable 接口的run方法 public static class RunnableTask implements Runnable { // 注意此处返回类型是void,Runnable接口没有返回值 @Override public void run(){ // d

2021-10-26 16:57:46 73

原创 JDK 与 Cglib 的使用和对比

Spring AOP 依靠 JDK 和 CGLib 进行动态代理实现。在此对两种实现方式的一些知识进行整理。 JDK 使用示例 /** * 需要被代理的接口 */ interface Iinterface { String proxyMethod(String gift); } /** * 实现 InvocationHandler 接口,对 invoke 方法进行重写 */ class MyHandler implements { /** * @param pro

2021-10-26 14:50:22 333

空空如也

空空如也

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

TA关注的人

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