【安卓】
解决办法:
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
}
});
本文来自博客园,作者:永恒&,转载请注明原文链接:https://www.cnblogs.com/Sun-yuan/p/19167370

浙公网安备 33010602011771号