自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小铛D的博客

学习,经验记录

  • 博客(14)
  • 资源 (4)
  • 收藏
  • 关注

原创 同步队列AQS---锁的底层支持 介绍以及原理解读

同步队列AQSAQS------锁的底层支持AbstractQueuedSynchronizer抽象同步队列简称AQS,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。另外,大多数开发者可能永远不会直接使用AQS,但是知道其原理对于架构设计还是很有帮助的。下面看下AQS的类图结构,如图所示。由该图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素,队列元素的类型为Node。Node节点内部参数介绍:thread变量用来存放进入AQS队

2020-05-10 21:39:23 272 1

原创 LockSupport 工具类介绍以及使用

LockSupport 工具类JDK中的rt.jar包里面的是个LockSupport是个工具类,它的主要作用是挂起和唤醒线程,该工具类是创建锁和其他同步类的基础。LockSupport类与每个使用它的线程都会关联一个许可证,在默认情况下调用LockSupport类的方法的线程是不持有许可证的。LockSupport是使用Unsafe类实现的,下面介绍LockSupport中的几个主要函数。void park()如果调用park方法的线程已经拿到了与LockSupport关联的许可证,则调用Lock

2020-05-10 21:37:13 401

原创 LongAccumulator介绍,使用,原理

LongAccumulator类原理探究LongAdder类时LongAccumulator的一个特例,LongAccumulator比LongAdder的功能更强大。例如下面的构造函数,其中accumulatorFunction是一个双目运算器接口,其根据输入的两个参数返回一个计算值,identity则是LongAccumulator累加器的初始值。public LongAccumulato...

2020-04-12 19:54:44 3622 2

原创 ThreadLocal(下) ThreadLocal继承性解决方案

ThreadLocal的前世今生详细介绍以及原理讲解

2020-04-08 20:34:07 1614

原创 ThreadLocal(中) ThreadLocal内部方法实现原理

ThreadLocal的前世今生详细介绍以及原理讲解

2020-04-08 20:33:11 277

原创 ThreadLocal(上) ThreadLocal的基本使用

ThreadLocal的前世今生详细介绍以及原理讲解

2020-04-08 20:31:25 94

原创 线程的通知与等待wait(),notify(),notifyAll(),sleep(),interrupt()方法使用以及实现原理

Java中的Object类是所有类的父类,鉴于继承机制,Java把所有的类都需的方法放在了Object类里面,其中就包含要说的通知与等待。1.wait()方法当一个线程调用一个共享变量的 wait() 方法时,该调用线程会被阻塞挂起,直到发生下面几件事情之一才返回。​ 1.其他线程调用了该共享对象的notify() 或者notifyAll() 方法。​ 2.其他线程调用了该线程...

2020-01-13 10:24:19 151

原创 CountDownLatch基本使用与简单案例,快速入手

CountDownLatch作用阻塞一个或多个线程等待其他线程完成操作。定义初始化的时候,需要传入一个正数来初始化计数器**(0也可以,但这样定义没有实际意义)。有两个方法countDown()**用于递减计数器,await()方法阻塞当前线程,直到计数器递减为0。CountDownLatch通常用于多个线程之间的协调工作。假设有如下情节:同时获取5张表的数据并一同返回为了让cpu更好的...

2020-01-08 18:52:33 151

原创 [Java 并发]读写锁ReedWriteLock/StampedLock

这篇看一下JUC包提供的读写锁(共享锁/独占锁)。之前我们都知道在一个变量被读或者写数据的时候每次只有一个线程可以执行,那么今天我们来看一下读写锁,读写两不误ReadWriteLock。这里有两个概念:独占锁:指该锁一次只能被一个线程所持有。(ReentrantLock和Synchronized都属于独占锁)。共享锁:指该锁可被多个线程所持有。ReentrantReadWriteLo...

2019-12-27 11:36:07 106

原创 公平锁/非公平锁/可重入锁/自旋锁介绍

在JAVA中我们知道有很多加锁的方式,比如常见的 通过synchronized关键字,还有Lock,还有之前说原子CAS操作时有看到过的死循环方式的自旋锁。借此来说一下锁的分类:公平锁:是指多个线程按照申请的顺序来获取锁,每次获取锁时会先查看此锁维护的等待队列。先到先得。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,每个线程不停的去获取锁,直到成功,有可能后申请的线程比先申请...

2019-12-22 13:30:23 252

原创 Integer使用值比较时需要注意的问题

Integer使用值比较时需要注意的问题看以下代码以及执行结果: public static void main(String[] args) { Integer a = 2; Integer b = 2; Integer c = 222; Integer d = 222; System.out.prin...

2019-12-16 18:26:46 171

原创 Atomic包中原子类的使用,以及内部CAS的实现和原理

上篇文章有说过 多线程环境下 进行变量属性 自增操作时会造成线程不安全的情况,也有说到volatile关键字,最后也不能保证线程安全,因为多线程情况下 他不能保证原子性,不能保证写操作过程不可以被插队,最后有提到java.util.current.atomic包中的AtomicInteger类,那么它是如何实现线程安全的呢?,让我们一探究竟!atomc包是java专门提供保证原子性的包...

2019-12-15 18:45:08 391

原创 Volatile关键字的出现背景以及实现原理和解决的问题

volatile关键字java虚拟机提供的轻量级同步机制 保证可见性 禁止指令重排序 不保证原子性 可见性:什么叫可见性呢,首先要说一下JAVA虚拟机内存,JAVA虚拟机内存模型规定,所有的变量都放在计算机的主内存当中,主内存是共享内存区域,所有线程都可以访问,而每个线程创建时都会为其创建一个工作内存(可以称之为栈空间),工作内存呢就是每个线程的私有...

2019-12-13 15:11:14 336

原创 JAVA 通过AOP做全局 请求,返回 日志信息统一处理

很多时候,当我们需要做接口的 埋点,QPS统计的时候可能会依靠一些第三方,现在还需要吗,NO,我们自己来做 直接上代码!!!!!!!!!!!!!!!!!!!!!!!首先定义一个实体类,来存放我们需要的信息:public class WebLog ...

2019-10-17 14:33:36 1014

redis伪分布式搭建

本人搭建redis伪分布式集群时,写的文档,步骤详细,亲测有效

2018-07-22

hadoop2.8.4完全分布式集群搭建

本人搭建hadoop完全分布式集群时,写的文档,内有详细步骤,

2018-07-22

Spring,SpringMvc,Hibernate

本人刚学习完,做了个整合,希望可以帮助到需要的人,虽然框架很落后,但是很适合初学者参考

2018-06-04

一些面试题

总结了一些面试遇到的题,和一些java底层的一些知识点

2018-05-13

空空如也

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

TA关注的人

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