2014-04-28 3 views
0

안녕하세요, 스프링에서 Async 어노테이션 지원에 대해 읽었습니다.범위 제한 @Async in Spring

비동기 주석을 사용하는 동안 어떤 범위의 제한이 나는 마음에 의심의 여지가 있고 그

입니까? 가정하자

이이 방법 m1()m2() m2() 자연에서 비동기이다가와 m1()가 실행을 위해 5 분을 소요하고 m2() 15 분, 어떤 행동이 될 것입니다 걸리는 경우 m1()

에서 호출?

5 분 후에 출력 되나요? 또는 m1()m2()이 실행될 때까지 기다릴 것입니까?

나는 (실제로, 콜백 메소드가있는 경우) 콜백 메소드가 후 실행했을 때 결과가있을 것이다, Asyncm2() 그냥하지 않도록

+0

스프링은이를위한 실행 프로그램을 만듭니다. m1은 5 분 후에 완료되고 완료되기 전에 m2가 스팬됩니다. 그러나 m1은 m2가 끝나기를 기다리지 않을 것입니다. 그것은 비동기 사용의 아이디어입니다 – Nazgul

답변

0

아마도 시나리오 이상에 대한 다른 스레드에서 실행하지만 것 이해 m2()가 완료되었습니다. m1()이 완료되면 아직 검사 할 결과가 없습니다. 대답은 m1()이 m2()를 호출하는 데 15 분이 더 걸렸습니다.

m1()이 m2() 결과에 종속되지 않으면 m1()이 완료 될 때 출력해야하지만 m2() 호출을 실행하는 스레드가 완료되었음을 의미하지는 않습니다.

+0

확실합니까? 당신이 나에게 그러한 진술에 대한 어떤 언급도 할 수 있겠습니까? 아직 발견하지 못했다면, 구현하고 점검 할 필요가 있습니다. –

+0

: - | 예. 필요한 데이터/리소스가 m2()에 의해 생성 된 경우 * m2()가 실행을 완료하기 전에 어떻게 * 가능한 * 해당 데이터/리소스를 가져올 수 있습니까? m1()이 종료되고 일부 청취자 또는 관찰자 또는 다른 사람들이 m2()의 결과를 기다려야합니다. – jgitter

+0

은 m2가 무효라고 말하고 그 중 아무 것도 기대하지 않습니다! 그때? –