4


私は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 でデータを取得する最も効率的な方法は何
ですか?
・スレッドの使用や解放など、スレッド資源の制御方法は?

前もって感謝します。

4

1 に答える 1