news 2026/8/10 1:32:19

解决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/8/8 18:28:47

Excalidraw文件导入导出:完美兼容主流格式

Excalidraw文件导入导出:完美兼容主流格式 在分布式团队日益成为常态的今天,如何让一个架构想法从头脑中快速、无损地传递到协作者面前,成了技术沟通的关键瓶颈。截图?太死板;PPT?太正式;手绘草…

作者头像 李华
网站建设 2026/8/7 8:18:50

Excalidraw图层管理技巧:复杂图表也能井然有序

Excalidraw图层管理技巧:复杂图表也能井然有序 在技术团队的日常协作中,一张草图往往比千言万语更有效。无论是架构评审会上快速勾勒的服务拓扑,还是产品需求讨论时随手画出的流程路径,可视化表达早已成为现代工程沟通的核心语言。…

作者头像 李华
网站建设 2026/8/8 15:13:28

34、Windows常见问题及解决方法全解析

Windows常见问题及解决方法全解析 1. 密码找回与电脑死机问题 1.1 密码找回 若之前的密码恢复选项都不起作用,可对比受密码保护数据的价值与聘请密码恢复专家的成本。你可以在谷歌(www.google.com)上搜索“recover windows password”来找到相关专家。 1.2 电脑死机 有…

作者头像 李华
网站建设 2026/8/9 22:21:42

MVC 视图

MVC 视图 引言 MVC(Model-View-Controller)是一种广泛用于软件开发的架构模式。它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。其中,视图(View)负责向用户展示数据,并在用户与数据交互时更新模型。本文将详细介绍MVC视图的概念、…

作者头像 李华
网站建设 2026/8/5 7:48:49

Excalidraw数据绑定实验:动态图表与实时数据库联动

Excalidraw数据绑定实验:动态图表与实时数据库联动 在一次团队的线上架构评审会上,我们遇到了一个熟悉又棘手的问题:PPT里的系统拓扑图是两周前画的,而今天某核心服务已经宕机三小时——但没人更新那张图。讨论仍在继续&#xff0…

作者头像 李华
网站建设 2026/8/8 10:33:39

用自然语言画图是什么体验?Excalidraw AI功能亲测报告

用自然语言画图是什么体验?Excalidraw AI功能亲测报告 在一次远程架构评审会议上,团队正讨论一个微服务系统的交互流程。以往这种场景下,总得有人花十几分钟在白板上拖拽框框、连线标注,边画还边解释:“这个是订单服务…

作者头像 李华