public void uploadScannerFiles(List<String> dtos) throws Exception {
//获取自定义的线程池
ExecutorService threadPool = MyThreadPoolExecutor.getThreadPool();
//存放每个线程的返回值
List<Future<String>> uploadResults = new ArrayList<>(dtos.size());
//文件服务的名称,window服务会调用下面的上传接口,把文件上传到fastdfs
for (String datum : dtos) {
uploadResults.add(threadPool.submit(new Callable<String> (){
//业务流程
@Override
public String call() throws Exception {
return res;//返回业务的执行结果,可以是业务结果
}
}));
}
//threadPool.shutdown();
boolean uploadFail = false;
for (Future<String> result : uploadResults) {
try {
//上传失败,get会抛异常
result.get();
} catch (Exception e) {
log.error("文件上传失败", e);
uploadFail = true;
break;
}
}
if (uploadFail) {
//上传失败,取消任务
for (Future<String> result : uploadResults) {
result.cancel(true);
}
throw new Exception("生成失敗");
}
}
java线程池带返回值的写法
最新推荐文章于 2024-01-24 17:27:02 发布