API를 개발 중입니다. 이 API는 결과를 얻기 위해 2 개의 DB 쿼리를 수행해야합니다. 컨트롤러에 반환 형식으로 호출 사용
스프링 4에서 병렬 스레드를 실행하는 우아한 방법
- :
나는 다음과 같은 전략을 시도했다. 2 개의 쿼리를 병렬로 실행하고 완료 시간을 감지하기 위해 Callable 및 CoundownLatch를 사용하는 2 개의 스레드가 생성되었습니다.
public class PetService {
public Object getData() {
CountDownLatch latch = new CountDownLatch(2);
AsyncQueryDBTask<Integer> firstQuery= new AsyncQueryDBTask<>(latch);
AsyncQueryDBTask<Integer> secondQuery= new AsyncQueryDBTask<>(latch);
latch.await();
}
public class AsyncQueryDBTask<T> implements Callable {
private CountDownLatch latch;
public AsyncQueryDBTask(CountDownLatch latch) { this.latch = latch;}
@Override
public T call() throws Exception {
//Run query
latch.countDown();
}
그것은 잘 작동하지만 난 어디 선가 봄의 구조를 파괴하고 생각합니다.
스프링 4에서 데이터를 가져 오는 가장 효율적인 방법이 궁금합니다.
- 자신의 쿼리를 실행하는 2 개의 스레드가 모두 작업을 완료하는 방법을 알고 싶습니까?
- 사용 및 릴리스 스레드와 같은 스레드 리소스를 제어하는 방법은 무엇입니까?
미리 감사드립니다.
https://www.mkyong.com/spring/spring-and-java-thread-example/ – StanislavL