多线程查询数据库,可以显著提升多批次查询速度。
List<Map> list=new ArrayList<>();
ExecutorService pool = Executors.newFixedThreadPool(48);
CountDownLatch latch = new CountDownLatch(list.size());
for (int i=0;i<list.size();i++){
HashMap map=new HashMap();
pool.submit(new Runnable() {
@Override
public void run() {
try{
//此处为查询语句
map.put("demo","查询结果");
timeList.add(map);
}catch (ResponseException e){
log.error("getGridTime异常",e);
}finally {
latch.countDown();
}
}
});
}
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
//list排序
list.sort(new Comparator<Map>() {
@Override
public int compare(Map o1, Map o2) {
Integer i1= (Integer) o1.get("hour");
Integer i2= (Integer) o2.get("hour");
return i1.compareTo(i2);
}
});
return list;