我是 Java 编程新手。我有一个用例,我必须并行执行 2 个数据库查询。我的班级结构是这样的:
class A {
public Object func_1() {
//executes db query1
}
public Object func_2() {
//executes db query1
}
}
现在我在同一个类中添加了另一个函数 func_3 ,它调用这两个函数,但也确保它们并行执行。为此,我正在使用可调用对象和期货。以这种方式使用它是否正确?我将这个变量存储在一个临时变量中,然后使用它从 func_3 调用 func_1 和 func_2(我不确定这是正确的方法)。或者有没有其他方法可以处理此类案件?
class A {
public Object func_1() {
//executes db query1
}
public Object func_2() {
//executes db query1
}
public void func_3() {
final A that = this;
Callable call1 = new Callable() {
@Override
public Object call() {
return that.func_1();
}
}
Callable call2 = new Callable() {
@Override
public Object call() {
return that.func_2();
}
}
ArrayList<Callable<Object>> list = new ArrayList<Callable<Object>>();
list.add(call1);
list.add(call2);
ExecutorService executor = Executors.newFixedThreadPool(2);
ArrayList<Future<Object>> futureList = new ArrayList<Future<Object>>();
futureList = (ArrayList<Future<Object>>) executor.invokeAll(list);
//process result accordingly
}
}