- 博客(17)
- 收藏
- 关注
原创 2.AbstractMap的源码解析
AbstractMap总结:1.AbsrtactMap是其他Map具体实现类的骨架实现2.AbstractMap实现Map接口,主要是对Map接口中的抽象方法进行重写,个别方法因为子类的不同特性在子类中进行具体实现实现3.在AbstractMap中,只没有对put()方法进行重写。4.在AbstractMap中,提供了两种Entry,可变Entry和不可变Entry,这两种均实现Map.E...
2019-12-05 16:23:01 164
原创 1.Map源码分析
Map是K,V集合的顶级接口,具体组成如下1.抽象方法size()isEmpty()put()putAll()get()remove()clear()containKey()containValue()2.三种视图的抽象方法Set keySet()Collection values()Set<Map.Entry<K,V>> entrySet...
2019-12-05 15:55:00 132
原创 12 JDK1.8 StampedLock源码解析
package com.xz.concurrent.locks;import java.util.concurrent.TimeUnit;/** * 1.since JDK 1.8 * 2.更加高效的读写锁的实现,不基于AQS实现,但还是利用CLH队列对线程进行管理 * 3.内部具有三种模式:写模式 读模式 乐观读模式(一个写锁 一个悲观读锁 一个乐观读锁) * 4.乐观读:在读数...
2019-12-02 13:45:19 152
原创 11.JDK 1.8 ReentrantReadWriteLock源码分析
package com.xz.concurrent.locks;import java.util.Collection;import java.util.concurrent.TimeUnit;/** * 1.简介:读写锁(一个读锁 一个写锁) 在读操作使用读锁 在写操作使用写锁 当写锁被获取到 后续的读写操作都会被阻塞 * 2.特点:支持公平锁和非公平锁 可重入锁 锁降价(写锁降低...
2019-11-22 16:57:52 146 1
原创 10.JDK1.8 ReentrantLock源码解析
package com.xz.concurrent.locks;import java.util.Collection;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.Con...
2019-11-21 15:29:00 87
原创 8.AQS源码分析共享式获取同步状态和释放同步状态
一.共享式获取同步状态1.acquireShared /** * 共享式获取锁 * tryAcquireShared()尝试获取同步状态 当返回值>0时,代表到获取同步状态 */ public final void acquireShared(int arg) { if (tryAcquireShared(arg) < 0) {...
2019-10-30 17:16:50 126
原创 9.LockSupport源码解析
package com.xz.concurrent.locks;/** * 类简介:用来阻塞当前线程和唤醒指定被阻塞的线程 park() unpark(Thread thread)实现的 * 实现:调用unpark(thread) , 会将线程的许可permit设置为1, * 调用park()方法时,若将当前线程的permit是1.将permit的值设置为0,并立即返回,若当前线程的pe...
2019-10-29 15:25:00 84
原创 7.AQS源码分析之独占式获取锁和释放锁
一.AbstraactQueuedSynchronizer(AQS)1.队列同步器,提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架2.基于模板方法模式3.使用方式:继承该类作为一个内部辅助类实现同步原语 并重写指定方法4.实现思路:AQS内部维护一个CLH队列来管理锁 双向链表的队列。线程会首先 尝试获取锁,若失败,则将当前线程以及等到状态等信息包装成一 ...
2019-10-28 18:59:28 211
原创 6.Striped64源码解析
Striped64是包内类,是LongAddr、LongAccumulator、DoubleAddr、DoubleAccumulator 累机器类的底层实现package com.xz.concurrent.atomic;import java.util.concurrent.ThreadLocalRandom;import java.util.function.DoubleBinaryO...
2019-10-25 15:20:01 256
原创 5.JDK 1.8 AtomicMarkableReference源码解析
AtomicStampedReference的实现与该类相似package com.xz.concurrent.atomic;/** * 在原子变量类中 对于引用类型的操作,用于解决CAS的ABA问题 * AtomicMarkableReference:带boolean类型的引用型原子量 每次执行CAS操作都需要比较该标记位 * 若版本吗,满足要求 则操作成功 版本不满足要求 则操作失...
2019-10-16 10:03:20 162
原创 4. JDK 1.8 AtomicInteferFieldUpdater源码解析
package com.xz.concurrent.atomic;/** * @author xuanzhou * @date 2019/10/14 16:54 */import java.lang.reflect.Field;import java.lang.reflect.Modifier;import java.security.AccessController;impo...
2019-10-14 17:42:04 100
原创 3.JDK 1.8 AtomicIntegerArray源码解析
package com.xz.concurrent.atomic;/** * @author xuanzhou * @date 2019/10/14 12:00 * 使用场景:对一系列的整数进行同步更新,可以使用AtomicIntegerArray; * 用原子数组更新int数组的元素 */import java.util.function.IntBinaryOperator;...
2019-10-14 16:53:04 99
原创 2.JDK 1.8 AtomicInteger源码解析
package com.xz.concurrent.atomic;import java.util.function.IntBinaryOperator;import java.util.function.IntUnaryOperator;import sun.misc.Unsafe;/** * 保证int类型变量在多线程的情况下线程安全。 */public class At...
2019-10-14 14:15:48 170
原创 1. JDK 1.8 Unsafe类源码解析
package com.xz.sun.misc;/* 类:执行硬件级别的原子操作,该类中均为native方法,连接Java应用程序和操作系统底层的方法, 使用单例模式。不安全的操作集合,通过内存地址存取fields(double-register,single-register)。 两大功能: 绕过JVM,直接修改内存对象 使用硬...
2019-10-12 15:02:01 272
原创 11.SpringBoot+SpringCloud+Feign+Eureka搭建微服务
一.使用技术SpringBoot:2.1.8.RELEASESpringCloud:Greenwich.SR3EurekaFeign:feign底层使用ribbon作为负载均衡的客户端,结合Eureka完成负载均衡。是声明式的客户端。二.Eureka服务注册中心Eureka服务注册中心的创建三.服务生产者(service)服务注册中心的创建四.消费者的创建(Feign)1.创...
2019-09-20 11:19:21 1920
原创 10.SpringBoot+SpringCloud+RestTemplate+Ribbon搭建微服务
一.简介SpringBoot:2.1.8版本SpringCloud:Greenwich.SR3Java:1.8本文使用SpringCloud+SprigBoot+Eureka+Ribbon完成微服务搭建Eureka:作为服务注册中心Ribbon:SpringCloud的负载均衡服务二.实现过程1.搭建服务注册中心...
2019-09-19 16:35:34 769
原创 设计模式--单例模式
一.简介1.分类:创建型设计模式2.定义:在内存中只含有一个对象,该对象自行创建,外部不能创建该对象3.适用场合:在应用程序的整个生命周期中,对象是有一个实例的时候使用单例模式。单例模式总是在第一次被访问时初始化 直到应用程序退出之前,会一直使用这一个实例。4.如何确保类在内存中只有一个对象构造方法私有化在成员区给出该对象的引用(必须私有化,静态)写...
2018-08-03 11:46:09 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人