在Java中,每个查询是否应该位于单独的线程中?
如果应用程序在查询返回响应之前一直处于阻塞状态,那么在线程池上执行查询难道没有意义吗?仅当您希望在这段时间内执行工作时,否则就没有意义了。一个很好的方法是让API返回一个在Java中,每个查询是否应该位于单独的线程中?,java,database,multithreading,Java,Database,Multithreading,如果应用程序在查询返回响应之前一直处于阻塞状态,那么在线程池上执行查询难道没有意义吗?仅当您希望在这段时间内执行工作时,否则就没有意义了。一个很好的方法是让API返回一个未来的。比如: interface QueryService { public FutureTask<QueryResult> query(Query q); } FutureTask<QueryResult> res = query(..); // do work res.get(); // b
未来的。比如:
interface QueryService {
public FutureTask<QueryResult> query(Query q);
}
FutureTask<QueryResult> res = query(..);
// do work
res.get(); // blocks until result is in
接口查询服务{
公共未来任务查询(查询q);
}
FutureTask res=查询(…);
//工作
res.get();//阻塞,直到结果显示
当然,只有当您希望在这段时间内执行工作时,才应该将可调用项
或可运行项
提交给执行服务
,否则就没有意义了。一个很好的方法是让API返回一个未来的。比如:
interface QueryService {
public FutureTask<QueryResult> query(Query q);
}
FutureTask<QueryResult> res = query(..);
// do work
res.get(); // blocks until result is in
接口查询服务{
公共未来任务查询(查询q);
}
FutureTask res=查询(…);
//工作
res.get();//阻塞,直到结果显示
当然,您通常应该将您的可调用项
或可运行项
提交给执行器服务
谢谢此答案足够了,因为此主题上有另一个线程。谢谢此答案足够了,因为此主题上有另一个线程。