/**
* 测试异步的执行文件上传,可以成功的支持多线程和异步
* @author he_guanhong
*
*/
@Component
public class AsyncTaskFileUploadTaskService {
@Autowired
private FileUpLoadTaskService fileUpLoadTaskService;
@Async
public void excuteAsyncTaskFileUpload(FileOfBillWrap fileOfBillWrap){
try {
fileUpLoadTaskService.uploadFileToWuzhong(fileOfBillWrap);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Async
public Future<Boolean> excuteAsyncTaskFileUploadWithResult(FileOfBillWrap fileOfBillWrap){
boolean result = false;
try {
result = fileUpLoadTaskService.uploadFileToWuzhong(fileOfBillWrap);
return new AsyncResult<Boolean>(result);
} catch (Exception e) {
e.printStackTrace();
}
return new AsyncResult<Boolean>(result);
}
}
执行异步任务
try {
System.out.println("Invoking an asynchronous method. "+ Thread.currentThread().getName());
//fileUpLoadTaskService.uploadFileToWuzhong(fileOfBillWrap);
/**
* Result from asynchronous process - true
Invoking an asynchronous method. pool-3-thread-1
Continue doing something else.
*/
Future<Boolean> future = asyncTaskFileUploadTaskService.excuteAsyncTaskFileUploadWithResult(fileOfBillWrap);
while (true) { ///这里使用了循环判断,等待获取结果信息
if (future.isDone()) { //判断是否执行完毕
System.out.println("Result from asynchronous process - " + future.get());
break;
}
System.out.println("Continue doing something else. ");
Thread.sleep(1000);
}
} catch (Exception e) {
continue;
}