并发
装睡的小5郎
爱生活,爱编程!
展开
-
捞取大量数据慢查询优化
场景双11期间这家客户积压了5w笔订单没有发货,所以客户反映每次计算都很慢,需要几十秒的时间。波次计算的代码需要把系统中审核的订单捞出来后进行计算分组划分到不同的批次中。排查过程首先我们通过链路和althas排查,发现查询子订单的sql需要in 5w个id。导致这个sql异常的慢,需要17s。方案于是我们商量了方案,首先这个sql就是一个简单的单表查询,in的字段也加了索引,所以不需要额外加索引,主要问题还是in的数量太多,查询很慢。采取多线程分批并行查sql这个方案,2000一批。查完后再聚合数原创 2021-11-07 16:56:59 · 306 阅读 · 2 评论 -
简单介绍AQS、ReetrantLock、CountDownLatch、CyclicBarrier、Semaphore
AQS,既AbstractQueuedSynchronizer, 是JUC包实现同步的基础工具,是一个抽象类。在AQS中,定义了一个volatile int state变量作为共享资源,并且内置自旋锁实现的同步队列,封装入队和出队的操作,提供独占、共享、中断等特性的方法。如果线程获取资源失败,则进入同步FIFO(先进先出)队列中等待(入队);如果成功获取资源就执行临界区代码。执行完释放资源时,通知队列中的等待线程来获取资源,然后出队。AQS的子类可以定义不停的资源实现不同性质的方法Reetran原创 2020-07-04 15:29:16 · 263 阅读 · 0 评论 -
PageHelper中遇到的ThreadLocal小坑
ThreadLocal笔记最近写代码刚好碰到ThreadLocal的小坑,顺便学习了一波ThreadLocal,拿出来分享一下ThreadLocal什么时候会出现线程不安全的情况呢?我总结了两种情况1.记录在 ThreadLocal 中的是一个线程共享的外部对象https://www.cnblogs.com/qilong853/p/5982878.html这边文章讲的很好,我就不复制黏...原创 2019-06-27 22:43:11 · 877 阅读 · 0 评论 -
Java并发编程(原子性、可见性、有序性、synchronized、CAS、volatile、ThreadLocal)笔记
自己网上总结了一些多线程并发的一些文章,如有错误请指教!多线程的三大特性一、原子性原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。线程切换带来的原子性问题Java中的一条语句,在翻译为机器码之后,可能对应的是多个指令。比如:**i++**这个操作至少需要3条指令;把 i 的值从内存=加载到...原创 2019-07-14 18:02:13 · 450 阅读 · 0 评论