首页 > 编程语言 > 详细

多线程并发落库遇到的线程问题

时间:2020-03-07 22:01:56      阅读:85      评论:0      收藏:0      [点我收藏+]

  为了提供落库效率,项目组决定采用多线程并发落库,但是出了问题,数据一条没有落下来。

1:怀疑时mysql数据库发生了死锁

使用这个命令查看是否有表被锁住了,发现没有表被锁

技术分享图片

 

 

2:于是查看线程池中的10条线程在做什么

使用jstack查看进程的堆栈信息

技术分享图片

 

线程池的最大线程数和核心线程数配的都是10 ,队列使用LinedListQueue对列,长度10240000

发现线程池中的10个线程都阻塞了,而且第一个创建的线程也没有释放,而且和数据源也没有关系,不可能是连接没有释放的问题。

 

3:于是想review一下代码,反编译一下源码,发现mapper中新接口没有,那为什么日志中没有报错呢?

于是看了一下异步落库的代码

技术分享图片

 

 

异步落库使用的线程池的submit方法,然后百度了一下发现submit方法内部抛异常是不是抛出来的,而且线程会阻塞

 

4:于是自己做个demo测试一下

 

多线程并发落库遇到的线程问题

原文:https://www.cnblogs.com/warrior4236/p/12437361.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!