真实项目-高并发项目如何debug

真实项目-高并发项目如何debug

背景介绍

今天公司项目日志里发现有两个空指针异常,立刻引起注意,虽然没影响到程序的整体情况,但要引起重视,于是就开始排查代码,
这个工作量很大,效果不明显,兄弟们在继续排查代码,我就想用debug的方式来解决,但是最少时也有 100多个线程在同时跑这一部分代码,
不想个办法肯定是行不通的,于是我就做了一个小的调整,瞬间把高并发的多线程变成排队单线程执行,问题很快就被定位了。

实现原理

我们用的是线程池技术,就是会把将要执行的任务放到线程池里执行,我们可以把不放入线程池里执行的任务,直接调用业务逻辑,这样就可以变成
单线处理了,具体代码如下:


     改动前:

           threadPool.execute(waterAirPullTask); 
     改动后:
   		try {
   			waterAirPullTask.accessToData();
   		} catch (Exception e) {
   			// TODO Auto-generated catch block
   			e.printStackTrace();
   		}
   	//	threadPool.execute(waterAirPullTask); 
   	
其中: accessToData() 是业务方法,在改动后我们是直接调用,改动前的正常逻辑应该是有线程调用
posted @ 2020-10-13 11:17  一锤定音885  阅读(337)  评论(0)    收藏  举报