news 2026/8/7 11:15:24

解决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/7 21:29:39

SQLite Unions 子句详解

SQLite Unions 子句详解 SQLite 是一种轻量级的数据库管理系统,以其简洁的设计和高效的性能著称。在 SQL 语言中,UNION 子句是一种强大的工具,它允许用户将多个 SELECT 查询的结果合并为一个结果集。本文将详细介绍 SQLite 中的 UNION 子句,包括其基本用法、注意事项以及一…

作者头像 李华
网站建设 2026/8/7 11:58:42

30、Windows Media Player使用指南

Windows Media Player使用指南 1. 浏览Windows Media Player的媒体库 Windows Media Player的媒体库是进行文件管理、播放列表创建、CD刻录或复制以及选择播放内容的幕后操作区域。首次启动时,它会显示音乐文件夹的内容。实际上,它包含多个库,不仅可以展示音乐,还能展示照…

作者头像 李华
网站建设 2026/8/7 4:30:58

高配云电脑推荐:2025横评,谁在延迟、价格、游戏库上全面胜出?

摘要:随着云游戏技术成熟,云电脑已成为玩家畅玩3A大作的主流选择。但市场上服务众多,宣传各异,究竟谁家延迟最低?谁家配置最强?谁家价格最实在?本测评对十款主流云电脑及云游戏平台进行了深度实…

作者头像 李华
网站建设 2026/8/8 3:44:32

Excalidraw多端适配策略:手机也能流畅画图

Excalidraw多端适配策略:手机也能流畅画图 在地铁上突然想到一个产品原型,想立刻画下来;开会时临时需要解释系统架构,却只能靠口头描述;远程协作中队友修改了白板内容,你的画面却迟迟未更新……这些场景你是…

作者头像 李华
网站建设 2026/8/7 15:27:53

《从数据到转化:游戏地域偏好驱动的精准推送指南》

有些团队投入大量资源做全量推送,却始终困在“高曝光低转化”的死循环里,核心症结在于无视不同地区玩家的地域行为基因差异—同款硬核竞技活动,在北方地区的参与率可能高达40%,而在南方地区却不足10%;一套休闲挂机玩法,在东部沿海城市的7日留存率能达到65%,在西北内陆却…

作者头像 李华
网站建设 2026/8/7 3:41:37

Excalidraw与Notion集成教程:打造智能知识库配图系统

Excalidraw与Notion集成教程:打造智能知识库配图系统 在技术团队日常协作中,一个常见的尴尬场景是:文档写得再详细,读的人还是看不懂架构逻辑。一张清晰的图胜过千言万语——但问题在于,画图往往成了少数“会用工具”的…

作者头像 李华