如果应用程序阻塞,直到查询返回响应,那么在线程池上执行查询是否有意义?
答案 0 :(得分:5)
只有当你期望在那段时间内完成工作时,否则没有意义。一个很好的方法是让您的API返回Future
。类似的东西:
interface QueryService {
public FutureTask<QueryResult> query(Query q);
}
FutureTask<QueryResult> res = query(..);
// do work
res.get(); // blocks until result is in
当然,您通常应该将Callables
或Runnables
提交给ExecutorService
。