【安卓】

解决办法:
1、创建完客户端client之后,设置一下setIoServiceFactoryFactory,
设置时,填入自定义的setExecutorServiceFactory,代码如下。
2、自定义线程工厂,继承SshdThreadFactory,拿到线程对象后,设置一下setUncaughtExceptionHandler

1、
SshClient sshClient = SshClient.setUpDefaultClient();
DefaultIoServiceFactoryFactory defaultIoServiceFactoryFactoryInstance = DefaultIoServiceFactoryFactory.getDefaultIoServiceFactoryFactoryInstance();
defaultIoServiceFactoryFactoryInstance.setExecutorServiceFactory(new Factory() {
@Override
public CloseableExecutorService create() {
return new SshThreadPoolExecutor(
10, 10,// nThreads, nThreads, // 10, 10
0L, TimeUnit.MILLISECONDS, // TODO make this configurable
new LinkedBlockingQueue<>(),
new SshdThreadFactory("poolName"),
new ThreadPoolExecutor.CallerRunsPolicy());
}
});
sshClient.setIoServiceFactoryFactory(defaultIoServiceFactoryFactoryInstance);

2、
org.apache.sshd.common.util.threads.SshdThreadFactory#newThread中加入catch

    t.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
        @Override
        public void uncaughtException(Thread t, Throwable e) {
            // todo log error
        }
    });
posted @ 2025-10-26 20:47  永恒&  阅读(9)  评论(0)    收藏  举报