自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多线程总结(四)万字长文,一篇彻底看懂ReentrantLock,AQS的源码

*多线程总结(四)ReentrantLock的源码理解一.前言首先在聊ReentrantLock之前,我们需要知道整个JUC的并发同步的基石,currrent里面所有的共享变量都是由volatile修饰的,我们知道volatile的语义有2大特点,可见性以及防止重排序(内存屏障,volatie写与volatile读)【1、当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写或者volatile读写),都不能进行重排序。这个规则确保volatile写之前的所有操作都不会被重排序到vol

2021-04-04 22:37:18 3783 24

原创 大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别)

大根堆与小根堆的理解,如何手写一个堆,以及什么时候用自己手写的堆,什么时候用语言提供堆的api,(二者的区别)定义Heap是一种数据结构具有以下的特点:1)完全二叉树;2)heap中存储的值是偏序;Min-heap: 父节点的值小于或等于子节点的值;Max-heap: 父节点的值大于或等于子节点的值;用通俗语言来说,大根堆就是每个最大的数字在每个子树的最上方,及大根堆pop值为最大值,小根堆反之堆的存储堆的存储一般由数组表示,由于堆的实质就是完全二叉树,所以对于每个i来说(从0开始),左

2021-01-16 21:55:36 3638 11

原创 万字长文 netty学习--- 网络编程/NIO/

万字长文 netty学习--- 网络编程/NIO

2022-09-18 21:01:50 323 1

原创 SpringBoot启动源码详解(一)

SpringBoot启动源码详解(一)【万字长文】1.首先大run!2.new(初始化实例)3.正式开始run4.一步一步来4.1首先进行计时监控4.2 然后进行初始上下文和configureHeadlessProperty4.3.然后来到了我们一个深入点4.4.开始默认初始化参数,--XX JAR这种,本测试为null4.5.根据运行监听器和应用参数来准备spring环境4.5.打印Banner类1.首先大run!main方法作为程序的入口,执行SpringApplication.run(),传入参

2021-11-24 17:25:58 884 9

原创 多线程总结(五)长文,详解ThreadLocal源码

在并发编程中有一个线程副本的概念,就是ThreadLocal,今天我们就着重来分析一个这个Theadlocal,我们将会从以下五个方面来分析这个问题,数据结构hash算法hash冲突内存泄漏问题set(),get()方法源码详解探测式清理,启发式清理扩容机制数据结构Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量threadLocals,也就是说每个线程有一个自己的ThreadLocalMap。每个线程Thread拥有一份自己的副本变量,所以线程

2021-09-02 19:50:10 318

原创 多线程总结(三)Synchronized 关键字的底层实现原理(锁升级概念)以及优化

多线程总结(三)Synchronized 关键字的底层实现原理(锁升级概念)以及优化一,前言前面我们学习了Synchronized 关键字,的用法,学完直接,我们可以来深入了解一下Synchronized的实现原理以及优化二,实现原理首先我们要知道对象锁(monitor)机制Synchronized不论是修饰方法还是代码块,都是通过持有修饰对象的锁来实现同步,那么Synchronized锁对象是存在哪里?首先涉及一点jvm的知识(jvm我也还没有复习),可能解释的不是特别好,我们知道new出来的

2021-03-28 22:39:13 658

原创 多线程总结(二)Synchronized 关键字的使用与用法

多线程总结(二)Synchronized 关键字的使用与用法一,为什么时候Synchronized前面文章说了线程不安全的问题,在共享资源的时候需要上锁来避免线程不安全,erqsynchronized可以保证一个线程的变化可见(可见性),即可以代替volatile。二.Synchronized的使用常见有三种用法Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:1.普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁2.静态同步方法,锁是

2021-03-25 22:15:55 575 1

原创 多线程总结(一)-概念,场景,创建,使用,基本方法,基本状态,线程不安全的原理,以及关键字 Synchronized 的使用

多线程总结(一)-概念,场景,创建,使用,基本方法,基本状态,线程不安全的原理,以及关键字 Synchronized 的使用一.概念(场景)首先我们在学习程序与进程的时候知道,最小的执行单位是线程。个人认为多线程理解的最好概念就是,一个线程就是一个执行路径(path),多个线程就是多个路径。举个最简单的也最ok的例子,电影院买票,100张票,如果只有一个执行路径(一个买票窗口)那么会非常慢,这时候可以使用多个执行路径(多个线程也就是多个买票窗口),来提高电影院的工作的效率二.线程的创建线程的创建

2021-03-25 21:56:43 515 5

空空如也

空空如也

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

TA关注的人

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