news 2026/5/1 7:51:28

解决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/5/1 6:54:48

从想法到图表只需10秒:Excalidraw AI指令大全

从想法到图表只需10秒:Excalidraw AI指令大全 在一次深夜的技术评审会上,团队正为一个微服务架构的调用链争论不休。有人提议画图说明,结果花了二十分钟才拖拽出一张勉强可用的流程图——而讨论的热情早已冷却。这样的场景,在远程…

作者头像 李华
网站建设 2026/5/1 6:47:54

HTML DOM 元素详解

HTML DOM 元素详解 HTML DOM(文档对象模型)是用于HTML和XML文档的编程接口。它允许开发者通过JavaScript操作HTML文档中的元素,从而实现动态网页设计。本文将详细介绍HTML DOM元素的概念、特性以及如何在网页中使用它们。 概念 DOM(Document Object Model)是HTML和XML文…

作者头像 李华
网站建设 2026/4/18 12:02:40

Python break 语句详解

Python break 语句详解 在Python编程中,break 语句是一种重要的控制流程语句,主要用于退出循环。本文将详细解析break语句的用法、特点以及在实际编程中的应用。 一、break语句的基本用法 break语句通常用于for循环和while循环中,当执行到bre…

作者头像 李华
网站建设 2026/5/1 5:49:50

ASP TextStream

ASP TextStream 引言 ASP TextStream 是一种在 Active Server Pages (ASP) 中用于读取和写入文本文件的组件。它提供了对文件进行逐行读取、写入和修改的强大功能。本文将详细介绍 ASP TextStream 的功能、使用方法以及在实际开发中的应用。 ASP TextStream 的功能 ASP TextStr…

作者头像 李华
网站建设 2026/5/1 5:51:11

跨部门协作提效:DeepSeek 生成不同岗位话术的沟通技巧

跨部门协作提效:DeepSeek生成不同岗位话术的沟通技巧前言在现代企业中,跨部门协作已成为推动项目成功、实现战略目标的关键引擎。然而,协作之路并非总是坦途。部门壁垒、专业术语差异、目标不一致、沟通效率低下等问题,常常成为协…

作者头像 李华
网站建设 2026/4/24 15:24:57

day41打卡

浙大疏锦行 import torch import torch.nn as nn import torch.nn.functional as Fclass SimpleCNN(nn.Module):def __init__(self):super(SimpleCNN, self).__init__()# 1. 卷积层 (Convolutional Layer)# 输入: 1个通道(灰度图), 输出: 32个特征图, 卷积核: 3x3self.conv1…

作者头像 李华