JUC并发编程相关学习记录
文章平均质量分 90
java并发编程相关
彤彤的小跟班
985上班族
展开
-
高并发下的一些基础概念:吞吐量、QPS、并发数、响应时间,服务熔断、隔离、降级、限流,缓存穿透、缓存击穿、缓存雪崩
文章目录吞吐量、QPS、并发数、响应时间吞吐量(Throughput)QPS(Query Per Second)并发量响应时间(RT)小结服务熔断、隔离、降级、限流降级熔断隔离限流缓存穿透、缓存击穿、缓存雪崩缓存穿透缓存击穿缓存雪崩吞吐量、QPS、并发数、响应时间吞吐量(Throughput)吞吐量(TPS):是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。对于单用户的系统,响应时间可以很好地度量系统的性能,但对原创 2021-08-18 13:00:00 · 891 阅读 · 0 评论 -
超详细JDK1.8版本的ConcurrentHashMap源码解析
文章目录1、ConcurrentHashMap底层数据结构HashMap底层数据结构ConcurrentHashMap底层数据结构2、ConcurrentHashMap的数组容量为什么是2的N次幂:tableSizeFor()方法3、ConcurrentHashMap的put操作详解:putVal()方法初始化方法:initTable()方法其他需要知道的方法putVal()方法源码分析4、ConcurrentHashMap的扩容原理:addCount()方法5、ConcurrentHashMap数据迁移操原创 2021-08-05 20:50:45 · 946 阅读 · 0 评论 -
并发安全的计数统计类:AtomicLong和LongAdder
文章目录AtomicLong概述AtomicLong实现原理AtomicLong的缺陷LongAdderLongAdder实现原理LongAdder源码分析AtomicLong和 LongAdder对比代码测试AtomicLong概述我们在进行计数统计的时,通常会使用AtomicLong来实现,AtomicLong能保证并发情况下计数的准确性,其内部通过CAS来解决并发安全性的问题。AtomicLong实现原理说到线程安全的计数统计工具类,肯定少不了Atomic下的几个原子类。AtomicLong原创 2021-08-03 12:29:09 · 991 阅读 · 0 评论 -
java中Unsafe类函数功能介绍
文章目录Unsafe类功能分配内存和释放内存定位对象某字段的内存位置以及修改对象的字段值挂起与恢复线程CAS操作Unsafe类功中其他方法介绍Unsafe类功能java不能直接访问操作系统底层,而是通过本地方法来访问,Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存2、可以定位对象某字段的内存位置,也可以修改对象的字段值,就算是它是私有的3、挂起与恢复线程4、CAS操作分配内存和释放内存Unsafe类中提供的3个本地方法allo原创 2021-08-02 16:01:55 · 416 阅读 · 0 评论 -
图解JDK7中HashMap扩容时会产生环形链表的原因
文章目录HashMap中扩容时转移数据的方法单线程扩容转移数据多线程扩容转移数据总结HashMap中扩容时转移数据的方法transfer方法:扩容时就是调用这个方法来转移数据的void transfer(Entry[] newTable, boolean rehash) { int newCapacity = newTable.length; for (Entry<K,V> e : table) {//直接遍历table变量 //链表跟table[i]断裂遍历,头部往后遍原创 2021-07-29 23:13:09 · 1048 阅读 · 0 评论 -
全面解析ThreadLocal
文章目录1.ThreadLocal概述基本使用常用方法代码演示2.ThreadLocal的内部结构原理探究3.ThreadLocal的核心方法源码set方法get方法remove方法initialValue方法4.ThreadLocalMap源码分析基本结构成员变量ThreadLocal.createMap方法存储结构 - Entry弱引用和内存泄漏hash冲突的解决ThreadLocaMap的构造方法ThreadLocalMap.set方法:(重点)1.ThreadLocal概述咱们先不看官方是如何说原创 2021-07-28 13:49:52 · 597 阅读 · 0 评论 -
JUC-08-java中的锁
文章目录01、公平锁和非公平锁02、可重入锁概述synchronized关键字演示可重入锁不需要手动释放锁ReentrantLock演示可重入锁ReentrantLock需要手动释放锁03、自旋锁04、死锁01、公平锁和非公平锁公平锁: 非常公平, 不能够插队,必须先来后到!非公平锁:非常不公平,可以插队 (默认都是非公平锁)参考可重入锁(ReentrantLock)的两个构造:一个可以传参,一个不可以传参,默认是非公平锁public ReentrantLock() { //非公原创 2021-07-26 10:45:07 · 181 阅读 · 0 评论 -
JUC-07-CAS
文章目录CAS的引出JDK对CAS的支持java中对ABA解决方法:AtomicStampedReferencevolatile和CAS和synchronized对比java.util.concurrent.atomic包CAS的引出通过使用多线程修改一个变量来引出CASpublic class CASDemo02 { //定义一个变量 public static int num=0; //一个执行加一操作的方法 public static void numPlus原创 2021-07-25 22:19:47 · 188 阅读 · 0 评论 -
JUC-06-JMM,Volatile关键字,单例模式
文章目录01、JMM:Java内存模型02、Volatile关键字03、深入单例模式饿汉式单例模式懒汉式单例模式初级版本的懒汉式单例模式:双重加锁版本的懒汉式单例模式防止简单暴力反射的懒汉式单例模式枚举可以防止反射破坏单例01、JMM:Java内存模型什么是JMM?JMM : Java内存模型,不存在的东西,一种约定关于JMM的一些同步的约定:1、线程解锁前,必须把共享变量立刻刷回【主存】。 - 例如:在一个进程中,有些变量是线程共享的,如果一个线程对这个变量进行修改,并不会直接在主存中 -原创 2021-07-25 17:54:32 · 313 阅读 · 0 评论 -
JUC-05-ForkJoin,Future(了解即可)
文章目录01、ForkJoin:分支合并02、java.util.concurrent.Future接口01、ForkJoin:分支合并java.util.concurrent包下的实现类:java.util.concurrent.ForkJoinTaskjava.util.concurrent.ForkJoinPoolForkJoin特点:工作窃取ForkJoin中维护的是双端队列,这样才可以工作窃取,当一个执行快的线程把本队列中的任务做完,去帮助别的线程执行任务,这时两个线程一个从队尾原创 2021-07-24 22:26:30 · 195 阅读 · 2 评论 -
JUC-04-线程池,四大函数式接口,Stream流式计算
目录01、线程池概述Executors创建线程池:不推荐ThreadPoolExecutor创建线程池:推荐线程池拓展02、四大函数式接口概述四大函数式接口之一:Function四大函数式接口之一: Predicate四大函数式接口之一:Consumer四大函数式接口之一:Supplier03、Stream流式计算01、线程池概述创建线程池:3大方法、7大参数、4 种拒绝策略。Executors创建线程池:三大方法ThreadPoolExecutor创建线程池:七大参数、 四种拒绝策略池化技原创 2021-06-05 16:21:09 · 338 阅读 · 1 评论 -
JUC-03-常用的辅助类,读写锁,阻塞对列
目录01,常用的辅助类CountDownLatchCyclicBarrierSemaphore02,java.util.concurrent.locks.ReadWriteLock:读写锁03,java.util.concurrent.BlockQueue:阻塞对列01,常用的辅助类先在我们来说一说java.util.concurrent包下的三个常用辅助类CountDownLatchCountDownLatch:计数器(下计数器):允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同原创 2020-09-25 21:31:50 · 189 阅读 · 1 评论 -
JUC-02-八锁问题,集合类的安全问题,Callable
目录01,八锁问题问题一问题二问题三问题四:问题五问题六问题七问题八(注意和问题七的对比)02,集合类的安全问题ListmapSet03,java.util.concurrent.Callable接口01,八锁问题对象锁(synchronized method{})类锁(static sychronized method{})注意:对象锁和类锁不是同一个锁(一定记住这句话)8锁问题:关于锁的8个问题问题一示例程序public class Test01 { public sta原创 2020-09-25 19:13:12 · 425 阅读 · 0 评论 -
JUC-01-JUC简介,进程和线程,Lock锁,生产消费问题
目录01,什么是JUC?02,进程和线程03,java开线程的三种方法01,什么是JUC?所谓JUC就是java并发工具包:java.util.concurrent学习JUC主要学习三个包的使用:java.util.concurrentjava.util.concurrentatomicjava.util.concurrent.locks02,进程和线程进程:进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间)进程不依赖于线程而独立存在,一个原创 2020-09-25 16:01:05 · 509 阅读 · 0 评论