0

我有一个将字符串作为输入并根据输入字符串从数据库返回数据的方法。我有一个字符串数组,我目前正在将每个字符串作为输入传递并循环整个数组

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 框架并行化。创建一个线程池执行器。线程数可能应该等于您可以拥有的数据库并发连接数(即连接池大小)。

循环遍历你的字符串。对于每个字符串,创建一个包装getData的 Callable并将该 callable 提交给执行程序。executor 将返回一个 Future ,您可以稍后使用它。一旦您提交了所有可调用对象,您就可以开始从您的 Futures 中检索 DataClasses。

于 2013-09-26T01:51:51.163 回答