一次不引用包跑外部依赖的实践(六)代码打磨
一次不引用包跑外部依赖的实践(八)异常

https://pan.baidu.com/s/1VmvAlknO87ev61ETKif_9g
1 异常没有往上抛,也没有打日志
2 可以不抛,但要打日志,并break(因为下一个future.get继续会被interruptedException)
3 生产者的get应当放到最后或不放,所有消费者挂掉,线程显示生产者阻塞,没有消费者,程序一直卡在第一个生产者future,且没有超时
直到对该方法所在线程执行cancel触发第一个生产者的future.get的interrupted时,后续所有消费者future.get得以执行并获得ExecutionException
如果后续Consumer仍然在跑,就会获得一个InterruptedException
4 有异常后应当手动cancel所有future子线程,尤其是自己
future.get
interrupted {
future.cancel
}
现在没有这个,所以future里面的生产者还卡在bq的put方法,
5 没有向上抛异常,所以一次不引用包跑外部依赖的实践(七)代码 里面最终只能用该方法所在线程的isInterrupted来给job状态,还遇到坑内存泄漏事故(三)线程的interrupted flag 的坑【重要】
*
future get先抛哪个异常,interrupt还是execution



| job快 | cancel快 | |
| 正常 | success | InterruptedException |
| 异常 | ExecutionException | InterruptedException |
*
实践中思考经过
日志没有找到消费者,两种可能,1消费者没起来 2 消费者挂了,但消费者挂的日志呢?
浙公网安备 33010602011771号