我正在开发一个API.此API需要执行2次DB查询才能获得结果.
我尝试了以下策略:
>在Controller中使用可调用作为返回类型.
>在Service中创建2个线程(使用Callable和CoundownLatch)并行运行2个查询并检测结束时间.
public class PetService {
public Object getData() {
CountDownLatch latch = new CountDownLatch(2);
AsyncQueryDBTask firstQuery= new AsyncQueryDBTask<>(latch);
AsyncQueryDBTask secondQuery= new AsyncQueryDBTask<>(latch);
latch.await();
}
public class AsyncQueryDBTask implements Callable {
private CountDownLatch latch;
public AsyncQueryDBTask(CountDownLatch latch) { this.latch = latch;}
@Override
public T call() throws Exception {
//Run query
latch.countDown();
}
它工作正常,但我觉得我正在破坏Spring的结构.
我想知道在Spring 4中获取数据的最有效方法是什么.
– 如何知道运行自己查询的2个线程完成了他们的工作?
– 如何控制线程资源,如使用和释放线程?
提前致谢.