针对单个客户端请求并行进行多个数据库查询

Raj*_*pta 5 java parallel-processing multithreading hector

为了完成用户的某些请求,在我的应用程序中,我从单个方法发出多个数据库查询,但它们当前正在按顺序执行,因此应用程序被阻止,直到它收到上一个查询的响应/数据为止,然后继续下一个查询.这不是我喜欢的东西.我想发出并行查询.

在发出查询之后,我还想做一些其他的工作(而不是在之前的查询响应之前被阻止)并且在获得每个查询的响应时,我想执行特定于每个查询数据的代码块.这样做的方法是什么?

编辑:我的数据库API确实提供了连接池.


我对Java多线程有点熟悉.

Using:-
------
Java 1.6
Cassandra 1.1 Database with Hector
Run Code Online (Sandbox Code Playgroud)

jsi*_*ght -3

这是一个非常简单/有限的方法:

final Connection conn = ...;
final Object[] result = new Object[1];
Thread t1 = new Thread(new Runnable() {
    public void run() {
        Object results = conn.executeQuery();
        result[0] = results;
    }
});
t1.setName("DBQueryWorker");
t1.start();
// do other work
while (t1.isAlive()) {
   // wait on thread one
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的方法,但还有许多其他方法是可能的(例如,通过 Java 并发任务执行器、Spring 任务执行器等进行线程池)。