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