最近恢复Venus的工作,恰逢十一假期尾声,突发一个Bug,让人匪夷所依。我们今天快速倒序追踪,层层回顾。
1. 背景
Venus交易中需要并行开数十至百个线程分别快速计算,程序中使用CountDownLatch用于计数,因为之后后做其他处理分析,需要等待所有交易结束。
程序运行稳定正常,线上也已经0.16版本(个人线上),恰逢十一假期突然出问题,CountDownLatch无法归零,导致整个主线程Hang在那里。如何破?
2. 场景分析
我们直接看一下源代码如何:
平铺直叙,代码中定义了CountDownLatch, 设定其数量为股票个数,然后线程中进行countDown.
平时运行正常不过,十一为何出问题?难道Venus想让笔者家里加班?
3. CountDownLanch
查看log问题主要出现在最终CountDownLatch无法归零,按说我们都把c

在恢复Venus交易工作时,遇到一个CountDownLatch无法归零的Bug,导致主线程挂起。深入分析发现,问题并非并发问题,而是某股票交易中的计算错误导致死循环。通过二分排查法定位到问题并修复,提醒在使用并发工具时要谨慎并充分理解其工作原理。

2823

被折叠的 条评论
为什么被折叠?



