Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,每个查询是否应该位于单独的线程中?_Java_Database_Multithreading - Fatal编程技术网

在Java中,每个查询是否应该位于单独的线程中?

在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

如果应用程序在查询返回响应之前一直处于阻塞状态,那么在线程池上执行查询难道没有意义吗?

仅当您希望在这段时间内执行工作时,否则就没有意义了。一个很好的方法是让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();//阻塞,直到结果显示

当然,只有当您希望在这段时间内执行工作时,才应该将
可调用项
可运行项
提交给
执行服务
,否则就没有意义了。一个很好的方法是让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();//阻塞,直到结果显示

当然,您通常应该将您的
可调用项
可运行项
提交给
执行器服务

谢谢此答案足够了,因为此主题上有另一个线程。谢谢此答案足够了,因为此主题上有另一个线程。