当前位置: 首页 > news >正文

解决SSHD的Thread Thread-2 threw exception: java.lang.IllegalStateException: Executor has been shut down

Java程序中使用SSHD库时,如果开启了多次SshClient,在第二次关闭SshClient的时候会报出以下的堆栈错误:

Exception in thread "Thread-2" java.lang.IllegalStateException: Executor has been shut down at org.apache.sshd.common.util.ValidateUtils.createFormattedException(ValidateUtils.java:234) at org.apache.sshd.common.util.ValidateUtils.throwIllegalStateException(ValidateUtils.java:228) at org.apache.sshd.common.util.ValidateUtils.checkState(ValidateUtils.java:205) at org.apache.sshd.common.util.threads.NoCloseExecutor.execute(NoCloseExecutor.java:100) at java.base/sun.nio.ch.AsynchronousChannelGroupImpl.executeOnPooledThread(AsynchronousChannelGroupImpl.java:178) at java.base/sun.nio.ch.Invoker.invokeIndirectly(Invoker.java:195) at java.base/sun.nio.ch.Invoker.invoke(Invoker.java:171) at java.base/sun.nio.ch.Invoker.invoke(Invoker.java:280) at java.base/sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.failed(WindowsAsynchronousSocketChannelImpl.java:587) at java.base/sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:389) at java.base/java.lang.Thread.run(Thread.java:1447)

而且每次都是稳定的是同一个线程Thread-2崩溃掉的,查阅相关资料发现,这可能是存在于Windows JDK中的一个bug,目前是一直处于未解决的状态。

  • https://bugs.openjdk.org/browse/JDK-7056546
  • https://stackoverflow.com/questions/14073554/correct-behavior-from-nio-2-asynchronousserversocketchannel-accept-on-windows
  • https://github.com/apache/mina-sshd/issues/409

同时,由于这是从线程里面崩溃掉的,没有外部的调用链,无法直接从外部直接捕获这个错误,而同时,这个错误并不会直接影响到程序运行,只是这个错误会出现在终端的打印里面,影响了显示。

因此,本文将通过设置Thread的默认错误处理器,以便捕获这个错误,使其不会让用户知道这样的错误。我们只需要在整个程序的入口出,添加以下代码,即可为所有线程添加默认的错误处理器,可以在这个方法中添加需要的逻辑,以便正确处理这个错误。

Thread.setDefaultUncaughtExceptionHandler{_:Thread?,_:Throwable?->}
http://www.jsqmd.com/news/117895/

相关文章:

  • 23、Windows 10 控制面板定制指南
  • 放置封神四神 无限代金券买断
  • MySQL Buffer Pool终极揭秘:缓存页淘汰与刷盘的完整机制
  • Excalidraw进阶玩法:结合大模型API自动生成UI草图
  • 24、Windows 10 个性化设置与升级全攻略
  • 超轻量级开源白板Excalidraw,竟支持AI文本转图表
  • Excalidraw模板库分享:拿来即用的技术图表示例
  • Excalidraw黑暗模式体验:长时间使用更护眼
  • 机器学习高阶教程<8>分布式训练三大核心策略拆解
  • Python3 XML 解析
  • LeetCode 452 - 用最少数量的箭引爆气球
  • Excalidraw协同编辑原理剖析:WebSocket实时同步机制
  • Excalidraw在教育领域的应用:手绘课堂互动新模式
  • Excalidraw颜色系统解读:科学搭配提升视觉传达力
  • Vue Router 越写越乱,如何架构设计?
  • Excalidraw主题定制指南:打造专属品牌视觉风格
  • Excalidraw历史快照功能:关键时刻找回丢失内容
  • 推荐 4 款开源且功能强大的内网穿透工具
  • 2025年徐州变压器品牌哪家强?前五名揭晓 - 2025年品牌推荐榜
  • 云电脑玩3A大作卡不卡?实测海马云、ToDesk等五款平台真实帧率数据
  • Excalidraw版本迭代回顾:最新AI功能带来了哪些惊喜?
  • SQLite Unions 子句详解
  • 为什么顶级科技公司都在用Excalidraw做技术评审?
  • 高配云电脑推荐:2025横评,谁在延迟、价格、游戏库上全面胜出?
  • Excalidraw数据绑定实验:动态图表与实时数据库联动
  • 告别Visio!Excalidraw手绘风白板更适合产品原型设计
  • Excalidraw动画功能探索:让静态图表动起来
  • 2025年12月江苏徐州地下运矿车驱动桥品牌推荐榜 - 2025年品牌推荐榜
  • Excalidraw多端适配策略:手机也能流畅画图
  • 远程协作不再难:Excalidraw实时白板助力敏捷开发