news 2026/7/16 13:44:26

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
解决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?->}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 8:57:45

电子烟如何实现口感一致——恒功率控制模式可以告诉你答案

电子烟的恒压/恒功率控制是其核心调压技术,目的是让雾化芯在不同阻值、不同电量下,输出稳定的加热功率,保证烟雾量和口感一致。以下是技术原理、实现方式和核心电路的详细拆解:一、恒功率控制(主流方案)原理…

作者头像 李华
网站建设 2026/7/15 15:55:52

Excalidraw主题定制指南:打造专属品牌视觉风格

Excalidraw主题定制指南:打造专属品牌视觉风格 在数字化协作日益深入的今天,团队对可视化工具的要求早已超越“能画就行”。一张架构图、流程图或白板笔记,不仅是信息传递的载体,更是品牌形象的延伸。当你的产品文档中嵌入的图表…

作者头像 李华
网站建设 2026/7/15 7:55:20

Excalidraw AI模型调优:降低token消耗提升准确性

Excalidraw AI模型调优:降低token消耗提升准确性 在远程协作日益频繁的今天,团队对高效可视化工具的需求达到了前所未有的高度。Excalidraw 作为一款开源的手绘风格白板工具,凭借其简洁直观的操作体验,在架构设计、产品原型和头脑…

作者头像 李华
网站建设 2026/7/16 13:05:36

Excalidraw安全指南:企业级数据保护与权限控制

Excalidraw安全指南:企业级数据保护与权限控制 在金融、医疗和政府等高合规性要求的行业中,一个看似简单的白板工具也可能成为数据泄露的突破口。当团队用它绘制系统架构图、业务流程或敏感原型时,那块“虚拟画布”上承载的,远不…

作者头像 李华
网站建设 2026/7/16 18:09:48

Excalidraw在教育领域的应用:手绘课堂互动新模式

Excalidraw在教育领域的应用:手绘课堂互动新模式 如今的课堂早已不是“教师讲、学生听”的单向传递场域。尤其是在编程、系统设计、产品原型等强调视觉化思维的课程中,师生之间对图形表达的需求日益增长——一张随手勾勒的架构图,往往比十页P…

作者头像 李华
网站建设 2026/7/16 5:09:37

Excalidraw API详解:开发者的AI绘图接口调用指南

Excalidraw API详解:开发者的AI绘图接口调用指南 在远程协作日益频繁的今天,如何快速将一个模糊的想法——比如“用户登录后跳转主页”——变成团队成员都能理解的流程图?传统方式需要打开绘图工具、拖拽形状、手动连线,至少耗时5…

作者头像 李华