高并发
文章平均质量分 95
不胖不换ID
我是个菜鸟,要好好学习
展开
-
AQS详解
文章目录学习前提什么是AQSCLH队列加锁过程acquire()终于还是对AQS下手了,学习Java并发这是必须要学习的知识。看了好多视频以及博客,以下是想以自己的思路去整理AQS的学习思路。学习前提了解Java中的锁:公平锁和非公平锁、共享锁和独占锁等(传送门:)知道CAS原理知道volatile原理了解链表数据结构对多线程有一定的了解什么是AQS并发使计算机得以充分利用计算能力,有效率地完成各类程序任务。当深入地学习Java中的并发,不可避免地将学习到锁 —— 使并发的资源能被正确原创 2021-05-12 15:55:08 · 401 阅读 · 0 评论 -
线程池
文章目录为什么使用线程池线程池如何使用newFixedThreadPoolnewSingleThreadExecutornewCachedThreadPoolnewScheduleThreadPool线程池的7大重要参数corePoolSizemaximumPoolSizeworkQueuekeepAliveTimeunitthreadFactoryhandler拒绝策略线程池底层工作原理工作中你用到哪个?手写线程池线程池配置合理参数CPU密集型IO密集型死锁编码及定位分析死锁原因死锁代码以及分析解决方案原创 2020-08-23 11:10:01 · 614 阅读 · 0 评论 -
Semaphore
文章目录Semaphore基础知识使用Semaphore加锁的几种常用方式Synchronizedlock实现类semaphore基础知识信号量主要用于多个共享资源的互斥使用并发线程数的控制使用public static void main(String[] args) { Semaphore semaphore = new Semaphore(3); for(int i=0;i<=6;i++ ){ new T原创 2020-08-22 20:33:16 · 168 阅读 · 0 评论 -
CyclicBarrier
文章目录CyclicBarrier基本理念用法Barrier被破坏CountDownLatch和CyclicBarrierCyclicBarrier基本理念构造方法CyclicBarrier(int parties)创建一个新的 CyclicBarrier,它将在给定数量的参与者(线程)处于等待状态时启动,但它不会在启动 barrier 时执行预定义的操作。CyclicBarrier(int parties, Runnable barrierAction)创建一个新的 CyclicBarrie原创 2020-08-22 20:32:32 · 128 阅读 · 0 评论 -
CountDownLatch
CountDownLatch基本知识CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。用法static Cou原创 2020-08-16 20:50:20 · 145 阅读 · 0 评论 -
Java锁
文章目录基础知识乐观锁和悲观锁自旋锁 VS 适应性自旋锁无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁公平锁和非公平锁可重入锁和递归锁独享锁和共享锁文章来源https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVoghttps://mp.weixin.qq.com/s/E2fOUHOabm10k_EVugX08ghttps://www.bilibili.com/video/BV18b411M7xz?p=26基础知识乐观锁和悲观锁乐观锁:认为自己在使原创 2020-08-14 07:31:55 · 283 阅读 · 0 评论 -
CAS
文章目录CAS是什么?CAS原理AtomicInteger方法调用缺点ABA问题解决ABA原子引用AtomicMarkableReference文章来源于:https://www.bilibili.com/video/BV18b411M7xz?p=12CAS是什么?Compare Ana Swap一条CPU的原子指令,不会造成数据不一致问题是乐观锁的一种实现 public static void main(String[] args) { AtomicInteger原创 2020-08-06 10:01:48 · 274 阅读 · 0 评论 -
sharding jdbc单库分表事物问题
技术使用mysqlSpring Data Jpasharding jdbcSpring boot项目没有拆分,因为是收费相关的。采用的是单体服务。问题复现 在进行某笔账单进行红冲调整后,遇到了锁等待的问题。一下是自己的排查路径数据库查明是哪个表被锁住,导致锁等待-- 查询是否锁表show OPEN TABLES where In_use > 0;-- 查询...原创 2020-04-26 10:00:52 · 678 阅读 · 0 评论 -
消息队列
为什么要使用消息队列我们从以下三个方面去回答:解耦、异步、削峰解耦传统模式下的系统架构由于系统耦合性太强,如果后续有其他系统接入,需要修改代码。使用中间件:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,原始系统不需要做任何修改。异步传统模式下:以同步方式运行程序,如果在高并发的情况下,会出现信息阻塞。使用中间件:将消息写入消息队列,业务逻辑以异步方式运行,加快响应速度...翻译 2019-12-11 10:59:37 · 118 阅读 · 0 评论