生产者消费者线程模型事故
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2023-03-03 ajax thisisunsafe
2018-03-03 一次redis悲观锁 实现 微信jssdk token缓存