Асинхронный метод не ведет себя асинхронноJAVA

Программисты JAVA общаются здесь
Anonymous
Асинхронный метод не ведет себя асинхронно

Сообщение Anonymous »

Я написал метод, который занимает больше времени, чем я желаю. Это зависит от внешних систем для отклика, так что это медленно. Я не имею большого контроля над этим. Из -за этого метода я не могу дождаться того времени времени, поэтому мое требование состоит в том, что после инициализации этого метода и предоставил необходимые параметры, он должен работать в фоновом режиме, в то время как родительский метод, который называется этот метод потребления, завершит выполнение. < /p>

Я использовал @async Annotation of Spring, чтобы объявить метод асинхронным. Этот конкретный метод вызывается из RestController, который завершит выполнение до того, как этот асинхронный метод завершит выполнение.
Метод выполняет асинхронно, но в тот момент, когда вызывающий вызывающий метод завершает выполнение, даже если асинхронный метод все еще неполный, прекращает выполнение Внезапно. Как я могу достичь того, что асинхронный метод завершает выполнение, хотя метод вызывающего вызова заканчивается раньше. Я не могу ждать в методе абонента, когда асинхронный метод завершит его выполнение. < /p>

Пример кода
@service
class timeconsumingservice {< /p>

@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();

}
}


Подробнее здесь: https://stackoverflow.com/questions/590 ... chronously

Вернуться в «JAVA»