最近接到一项工作,是要计算某个省的所有县,两两之间的距离。这个排列组合大约有2万条记录。我采取的是百度地图API来查询两个县之间的距离。由于访问百度地图API请求数据,需要一定的时间,所以考虑使用java的线程池创建多线程来完成这一项工作,一边去baidu地图查询结果,一边向CSV文件写入数据。
代码如下:
//用队列存放每一个线程执行的结果值。
Queue<Future> result = new LinkedList();
list = service.getAllData(); //从数据库查询各个省之间的排列组合。System.out.println("-------"+list.size()); //大约2万条
//建立线程池(固定数量的线程池)
ExecutorService exe = Executors.newFixedThreadPool(20);
//循环list,计算出每两个省之间的距离。
for (final Routes route : list) {
//用Future来接受线程执行返回的结果。