
并发处理
文章平均质量分 92
爱我所爱0505
喜欢编程
展开
-
《Java并发编程的艺术》总结
目录一、总结第一章 并发编程的挑战第二章 Java并发机制的底层实现原理第三章 Java内存模型第四章 Java并发编程基础第五章 锁Lock第六章 Java并发容器和框架第七章 原子操作类第八章 并发工具类第九/十章 线程池及Executor框架二、参考资料一、总结第一章 并发编程的挑战第二章 Java并发机制的底层实现原理第三章 Java内存模型第四章 Java并发编程基础第五章 锁Lock第六章 Java.原创 2022-06-26 19:39:30 · 224 阅读 · 0 评论 -
Fork/Join框架
一、介绍Fork/Join框架是一个并行执行任务的框架,目的是把大任务分割成若干个子任务(每个任务否是一个Fork,且每个任务还可以分割多个子任务),最终每个任务执行结果合并到总结果。如下图所示,是Fork/Join的运行流程图。...原创 2022-04-27 22:09:54 · 603 阅读 · 0 评论 -
线程池 — Executor
一、线程池线程池目的:通过减少频繁创建和销毁线程来降低性能损耗。每个线程都需要一个内存栈,用于存储局部变量、操作栈等信息,可以通过-Xss参数来调整每个线程栈大小(默认64位OS为1024KB)。 线程池一般配合队列一起工作。设置队列的大小,当超出该阈值后,就进入拒绝策略来处理,从而保护系统免受大流量而导致崩溃。 创建多少线程?要根据实际业务情况来压测决定。任务类型IO密集型还是CPU密集型、CPU核数,来设置合理的线程池大小、队列大小、拒绝策略等参数...原创 2021-12-03 14:39:09 · 958 阅读 · 0 评论 -
Java的原子操作类和并发工具类
一、原子操作类java.util.concurrent.atomic包下提供了一系列的原子操作类,主要包含:原子更新基本类型、原子更新数组、原子更新引用、原子更新类的属性。这些类都具有线程安全性,其底层实现基本上使用Unsafe实现的包装类,完成自旋和CAS操作。1. 类型总结作用 实现类 特点 原子更新 基本类型 AtomicBoolean AtomicInteger AtomicLong 1. 只能...原创 2022-04-29 20:48:37 · 797 阅读 · 2 评论 -
阻塞队列BlockingQueue
一、介绍阻塞队列BlockingQueue是对队列的操作进行阻塞,主要有两个功能:阻塞插入:队列满时,会阻塞插入元素的线程,直到队列不满。 阻塞移除:队列空时,会阻塞获取元素的线程,直到队列非空。如下表所示,对阻塞插入/移除有4中处理方式,且对应的方法有所不同。方法/处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入 add(e) offer(e) put(e) offer(e, ltimeout, u...原创 2022-04-24 18:14:14 · 1033 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue的实现原理
一、介绍java.util.concurrent.ConcurrentLinkedQueue是基于FIFO的单向链表的无界线程安全队列。添加元素到队列尾部;获取返回队列头部的元素原创 2022-04-18 19:44:16 · 881 阅读 · 1 评论 -
ConcurrentHashMap的实现原理
目录一、为什么用ConcurrentHashMap?二、ConcurrentHashMap结构及初始化1.ConcurrentHashMap结构2. 初始化三、ConcurrentHashMap的API1. put()源码2. get()源码四、参考资料一、为什么用ConcurrentHashMap?ConcurrentHashMap线程安全且高效的操作,如下图对比所示。而HashMap非线程安全,在put操作时,易出现死循环,即:链表会形成环形...原创 2022-04-16 17:27:26 · 1734 阅读 · 0 评论 -
Lock锁<二> _ 重入锁/读写锁
目录一、重入锁ReentrantLock1. 实现锁重进入2. 获取公平锁与非公平锁的区别二、读写锁ReentrantReadWriteLock1.ReentrantReadWriteLock的API2. 读写状态设计3. 写锁的获取与释放4.读锁的获取与释放5. 写锁降级三、参考资料一、重入锁ReentrantLock重入锁指线程获得锁后能够再次获取该锁而线程不被阻塞。synchronized关键字隐式的支持重进入。java.util...原创 2022-04-12 21:33:21 · 670 阅读 · 0 评论 -
Lock锁<一> _ 基础
一、Lock接口并发包下java.util.concurrent.locks.Lock接口实现锁的功能,必须显示地获取和释放锁。如下图所示,是Lock的类图。原创 2022-04-08 17:00:33 · 678 阅读 · 0 评论 -
基于Canal的同步缓存
目录一、Canal介绍二、MySQL主从配置1. 进入docker的mysql容器2.进入mysql配置3.编辑my.cnf4.重启mysql服务和容器5.创建同步用户三、Canal服务端1.解压文件2. 配置监听数据库3.配置Canal4.启动Canal服务器四、Canal客户端1. 依赖Jar包2.CanalClient五、参考资料一、Canal介绍Canal是阿里开源的基于MySQL数据库binlo...原创 2022-01-07 20:33:40 · 1084 阅读 · 0 评论 -
Disruptor并发<二> _ 秒杀示例
一、秒杀流程原创 2022-01-02 21:03:22 · 603 阅读 · 1 评论 -
Disruptor并发<一> _ 介绍
一、介绍Disruptor是一个开源的并发框架,它被设计用于在生产者—消费者(Producer-Consumer Problem,简称PCP)问题上获得高吞吐量(TPS)和低延迟。为了解决高并发下列队锁的问题,最早由LMAX(一种新型零售金融交易平台)提出并使用,能够在无锁的情况下实现队列的并发操作,并号称能够在一个线程里每秒处理6百万笔订单。PCP又称Bounded-Buffer问题,其核心就是保证对一个Buffer的存取操作在多线程环境下不会出错。使用Java中的...原创 2022-01-01 16:57:21 · 542 阅读 · 0 评论