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