生产者消费者线程模型事故

 

 

1 异常没有往上抛,也没有打日志

 

解决:

1 往上抛

2 可以不抛,但要打日志,并break(因为下一个future.get继续会被interruptedException)

 

 

2 生产者的get应当放到最后或着不放,所有消费者挂掉,线程显示生产者阻塞,没有消费者,程序一直卡在第一个future,且没有超时)

 

 

3 有异常后应当手动cancel所有future子线程

 

 

future get先抛哪个异常,interrupt还是execution

本实践是抛的execution

public V get() throws InterruptedException, ExecutionException {
int s = state;
if (s <= COMPLETING)
s = awaitDone(false, 0L);
return report(s);
}

没有进awaitDone

 

posted on   silyvin  阅读(1)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2023-03-03 ajax thisisunsafe
2018-03-03 一次redis悲观锁 实现 微信jssdk token缓存
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示