【安卓】
解決辦法:
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
}
});
本文來自博客園,作者:永恒&,轉載請注明原文鏈接:http://www.rzrgm.cn/Sun-yuan/p/19167370

浙公網安備 33010602011771號