异步方法不是异步行为

时间:2019-11-27 06:05:30

标签: java asynchronous

我写的方法比我想要的花费更多的时间。它取决于外部系统的响应,因此它很慢。我对此没有太多控制权。由于该方法,我无法等待该时间段,因此我的要求是,在初始化该方法并提供所需的参数后,该方法应在后台运行,而调用此耗时方法的父方法将完成其执行。

我已经使用spring的@Async注释将方法声明为异步方法。从RestController调用此特定方法,该方法将在此异步方法完成执行之前完成其执行。 我已经声明了自定义执行程序,并将其映射到dispatcher-servlet.xml中。

该方法正在异步执行,但是即使异步方法仍然不完整,调用方方法完成执行的那一刻也会突然停止执行。我如何实现即使调用方方法更早完成,异步方法也完成了执行。我不能在调用方方法中等待异步方法完成其执行。

代码示例    @服务     类TimeConsumingService {

@Async("customExecutor")
    public  void  callTimeConsumingService( ){

//This call takes time between 50000 miliseconds to 70000 miliseconds
} 

}

//Caller Method

@RestController
@RequestMapping("rest/document/content")
public class CallerController
{

@Autowired
TimeConsumingService timeConsumingService;


 @LoggingAdvice
    @RequestMapping(value="/request", method = RequestMethod.POST )
    public String requestContent( @RequestParam(value = "file") MultipartFile file) throws Exception, IOException
    {

timeConsumingService.callTimeConsumingService();

}
}

0 个答案:

没有答案