0

入力として文字列を受け取り、入力文字列に基づいて DB からデータを返すメソッドがあります。文字列の配列があり、現在、各文字列を入力として渡し、配列全体をループしています

public DataClass getData(String input){
  ....logic to get the data when string=input from a third party API. 
       Third party API takes 'input' string and gives out data....
}

public void callerMethod() {
  List<String> myStrings = new List<String>();
  for(inputStr : myStrings) {
       DataClass data = getData(inputStr);
  }
}

上記のコードは、私が今持っているロジックです。このアプローチには時間がかかるため、リストを次々とループするのではなく、 getData() メソッド呼び出しを同時呼び出しに変更したいと考えています。ここでスレッドを使用できるかどうか、またはこれを達成するための新しいアプローチがあるかどうかはわかりません。

4

1 に答える 1

2

これは、Executor フレームワークを使用して並列化できます。ThreadPoolExecutor を作成します。スレッドの数は、データベースに対して保持できる同時接続の数 (つまり、接続プールのサイズ) と同じである必要があります。

文字列をループします。文字列ごとに、getDataをラップする Callable を作成し、callable をエグゼキュータに送信します。エグゼキュータは、後で使用できる Future を返します。すべての callable を送信したら、Future から DataClass の取得を開始できます。

于 2013-09-26T01:51:51.163 に答える