Java 多线程的子线程异常,如何处理才不会影响其他线程?
场景如下:
某段代码需要调用 A,B,C 三个接口。采用多线程去同时请求三个接口,然后汇总结果回来,可以用哪些并发、线程工具类写?
如果 A 接口出现异常(接口服务可以能挂掉,或者接口网络通信很慢),怎么处理才不会影响到 B,C 接口的调用?(因为等待三个线程执行完汇总的话,A 接口出现问题可能会耗费比较久时间等待 A 的结果,同时如果这段代码是并发量比较高的情况下,如何保证 A 接口的故障不会积压大量线程在这里等待 A 接口返回,造成积压线程过多引起的内存不足?)
回答·9
最热
最新
- A 主线程请求设置超时时间,bc 分别用 2 个线程池执行
- 啊这....太基本了吧
- 接口调用要设置超时时间
- 问题本身就很复杂,抛开 abc 是否有事务,其中失败过程怎么反馈给使用端,怎么重试如何补救或补偿都是问题,你关注点是不是不对
- 如果你怕耗费时间,也就是时间敏感,可以加个超时等待,future 也有相应的方法可以直接用,假如接口只能容忍 5 秒,你可以设置 5 秒超时,无论异步线程是否请求完成,5 秒后都将数据汇总,然后往下执行。
- A 主线程请求设置超时时间,bc 分别用 2 个线程池执行
- countdownlatch 吧
- 可以尝试忽略不处理哦
- 建议通过熔断机制保护 A 服务,而不是对 A 超时返回