随笔分类 - 【0-基础】Java多线程
摘要:JDK原子类基于CAS轻量级原子操作实现,使得程序运行效率变得更高。 (1)基本原子类基本原子类的功能是通过原子方式更新Java基础类型变量的值。基本原子类主要包括以下三个: AtomicInteger:整型原子类。 AtomicLong:长整型原子类。 AtomicBoolean:布尔型原子
阅读全文
摘要:只要我们所有提交到线程池的任务,都用一个框架统一封装的 RunnableWrapper 类,基于装饰模式来进行包装。 此时就可以得到线程任务的创建时间、开始时间、结束时间,接着就可以计算出这个任务的排队耗时、运行耗时,通过监控系统进行上报。 此时我们通过在监控系统里配置告警条件,就可以实现不同线程池
阅读全文
摘要:参考: https://tech.meituan.com/2022/05/12/principles-and-practices-of-completablefuture.html https://blog.csdn.net/u014209205/article/details/80598209 全
阅读全文
摘要:业界参考: Java线程池实现原理及其在美团业务中的实践: https://tech.meituan.com/2020/04/02/java-pooling-pratice-in-meituan.html Java线程池的实现原理及其在业务中的最佳实践 https://new.qq.com/rain
阅读全文
摘要:concurrent\locks包 Lock:抽象接口 LockSupport: AbstractXXXSynchronized:同步器, XXXLock 内部包含AQS(AbstractQueuedSynchronizer,参考其他总结)的使用 ReentrantLock.java(默认非公平锁)
阅读全文
摘要:一、CAS是什么 Compare and Swap, 1)先读取当前值; 2)对数据操作; 3)写入前比较数据库取值是否是步骤1获取的值,如果是直接写入;如果不是继续回到步骤1的操作 适用场景: CAS 适合简单对象的操作,比如布尔值、整型值等; CAS 适合冲突较少的情况,如果太多线程在同时自旋,
阅读全文
摘要:一、抽象类AQS在JDK应用 ReentrantLock、ReetrantReadWriteLock、 Semaphore、CountDownLatch:Shared模式 ThreadPoolExecutor 二、AbstractQueuedSynchronizer Provides a frame
阅读全文
摘要:一、synchronized 和 ReentrantLock 的区别 两者的共同点: 1. 都是用来协调多线程对共享对象、变量的访问 2. 都是可重入锁,同一线程可以多次获得同一个锁 3. 都保证了可见性和互斥性 两者的不同点: 1. ReentrantLock 显示的获得、释放锁,synchron
阅读全文
摘要:Phase:https://cloud.tencent.com/developer/article/1350849 CyclicBarrier 参考:https://blog.csdn.net/qq_38293564/java/article/details/80558157 栅栏类似于闭锁,它能阻
阅读全文
摘要:CopyOnWriteArrayList CopyOnWriteArrayList这是一个ArrayList的线程安全的变体。 原理大概可以通俗的理解为: 初始化的时候只有一个容器,长时间内容器数据、数量等没有发生变化的时候,多个线程都是读取(假设这段时间里只发生读取的操作)同一个容器中的数据,所以
阅读全文
摘要:1. Java并发知识库 并发队列 1、ArrayBlockingQueue:bounded queue A simple work queue is an example use case. This scenario is often a low producer-to-consumer rat
阅读全文
摘要:转自美团技术网站: https://tech.meituan.com/2018/11/15/java-lock.html 前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场
阅读全文
摘要:转自:美团技术网站 https://tech.meituan.com/2019/12/05/aqs-theory-and-apply.html 前言 Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简
阅读全文