我有一个方法,它接受一个字符串作为输入,并根据输入字符串从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()方法调用更改为并发调用,而不是一个接一个地循环遍历列表,因为这种方法需要时间。我不确定我是否可以在这里使用线程,或者是否有更新的方法来实现这一点。
答案 0 :(得分:2)
这可以使用Executor框架进行并行化。创建一个ThreadPoolExecutor。线程数应该等于您可以对数据库进行的并发连接数(即连接池大小)。
循环你的字符串。对于每个字符串,创建一个包装 getData 的Callable并将callable提交给执行程序。执行者将返回一个您可以使用稍后的Future。一旦提交了所有可用的callables,您就可以开始从Futures中检索DataClasses。