news 2026/7/12 20:19:25

解决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/11 19:36:08

Excalidraw动画功能探索:让静态图表动起来

Excalidraw动画功能探索:让静态图表动起来 在技术分享或产品评审会上,你是否曾遇到这样的尴尬——精心绘制的架构图刚展示一半,同事就问:“这一步是在哪个阶段发生的?” 静态图表擅长呈现“结构”,却难以表…

作者头像 李华
网站建设 2026/7/12 3:06:33

Excalidraw插件生态盘点:哪些AI扩展最值得安装?

Excalidraw插件生态盘点:哪些AI扩展最值得安装? 在技术团队的日常协作中,你是否经历过这样的场景?一场架构评审会议正在进行,讨论逐渐深入,但白板上的草图却迟迟无法跟上思路——画得太慢、结构混乱、表达不…

作者头像 李华
网站建设 2026/7/10 17:00:36

35、Windows 10 电脑数据迁移与求助指南

Windows 10 电脑数据迁移与求助指南 一、旧电脑数据迁移到新 Windows 10 电脑的方法 在更换电脑时,将旧电脑的数据迁移到新电脑是一项重要任务。以下介绍几种常见的迁移方法。 (一)PCmover 软件 PCmover 软件适合那些有耐心且具备一定电脑使用经验的人。如果使用过程中出…

作者头像 李华
网站建设 2026/7/10 22:48:54

钉钉占用C盘空间太大怎么办?

钉钉占用C盘过多,优先通过客户端修改下载文件保存路径,再用符号链接迁移核心缓存/数据目录,以下是Windows系统的完整操作步骤。一、快速修改下载文件路径(推荐) 打开钉钉,点击左上角头像 → 设置 → 通用。…

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

Vue Router 越写越乱,如何架构设计?

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…

作者头像 李华