私はAPIを開発しています。この API は、結果を取得するために 2 つの DB クエリを実行する必要があります。
私は次の戦略を試しました:
- コントローラーの戻り値の型として callable を使用します。
Service に 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(); }
うまくいきましたが、どこかでSpringの構造を壊しているように感じます。
Spring 4 でデータを取得する最も効率的な方法は何
ですか?
・スレッドの使用や解放など、スレッド資源の制御方法は?
前もって感謝します。