我有一组必须同时执行的查询。为此,我为每个查询启动了一个可运行线程,从遍历查询列表的 while 循环中调用它。
线程执行每个查询,并计算每个查询执行所花费的时间。这是通过捕获开始时间和结束时间来获取差异来完成的。这个时间应该是每个查询具体的,需要和对应的查询一起打印出来/
在这种情况下,我只需要捕获时间并显示吗?它会导致任何同步问题吗?
我有一组必须同时执行的查询。为此,我为每个查询启动了一个可运行线程,从遍历查询列表的 while 循环中调用它。
线程执行每个查询,并计算每个查询执行所花费的时间。这是通过捕获开始时间和结束时间来获取差异来完成的。这个时间应该是每个查询具体的,需要和对应的查询一起打印出来/
在这种情况下,我只需要捕获时间并显示吗?它会导致任何同步问题吗?
这个问题太笼统了。会不会导致并发问题?或许。您是否在每个 Runnable 之间共享对象?如果你这样做,你可能有问题,如果你没有,那么没有。
例如,如果您的循环看起来像这样(此代码证明了一点 - 它不起作用):
for(int i=0;i<queries.size();++i){
String query = queries.get(i);
new Thread(new Runnable() {
public void run() {
//Execute the query
}
});
}
每个线程将执行它自己的查询而不访问一些共享数据——那么不,你不会有并发问题——至少在 Java 代码中是这样。您可能在数据库中遇到问题 - 例如,多个查询尝试更新同一行。