多线程执行一半后不往后走的坑

场景简单演示

首先演示一个简单的场景。

采用ThreadPoolExecutor提交线程的方式,直接在多线程中执行的某个地方抛出一个异常。

用submit方法提交的情况:

调用的地方:

image-20240326213637557

发现一直卡在那,没有任何错误日志。

改成execute方法提交多线程后:

多线程调用的地方:

image-20240326211141260

发现控制台会打印错误日志了:

image-20240326211045549

上面是我遇到问题后,演示的一个简单例子。

下面来看我遇到的真实的场景。

实际的场景

项目用的是Mybatis框架,这里是xml文件中的一段sql查询语句。

最后的错误原因是rebatePlanId没有在请求参数对应的属性里。所以这个sql实际是会报错的。但是由于用的多线程提交方式不对,导致没有打印日志。

image-20240326212304341

执行到一半,只打印了sqlSession关闭的一些日志:

image-20240326212904552

因为用了CountDownLatch,会等待前面的任务处理完后,才执行后面的逻辑,所以导致主线程一直挂起。

image-20240326212755752

用execute方法提交线程后,就会打印报错日志:

image-20240326212529588

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰-58

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值