如何使用java并发读取数据?

时间:2013-09-25 22:54:48

标签: java multithreading concurrency java.util.concurrent

我有一个方法,它接受一个字符串作为输入,并根据输入字符串从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()方法调用更改为并发调用,而不是一个接一个地循环遍历列表,因为这种方法需要时间。我不确定我是否可以在这里使用线程,或者是否有更新的方法来实现这一点。

1 个答案:

答案 0 :(得分:2)

这可以使用Executor框架进行并行化。创建一个ThreadPoolExecutor。线程数应该等于您可以对数据库进行的并发连接数(即连接池大小)。

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