/*** 多线程进行计算*/List allResult =new ArrayList();/*//测试数据
list.clear();
list.add("");
list.add("");
list.add("");*/ExecutorService executorService=Executors.newCachedThreadPool();
RealTimeRiskCallable realTimeRiskCallable1= null;
RealTimeRiskCallable realTimeRiskCallable2= null;
FutureTask result1=null;
FutureTask result2=null;
RealTimeRisk realTimeRisk=newRealTimeRisk();
RealTimeRisk realTimeRisk2=newRealTimeRisk();long startTime=System.currentTimeMillis();
path=tempPath;//最初的dat路径,上面进行过处理
int minVale=0;int event=0;int temp=0;for (int i = 0; i < list.size(); i++) {/*** 目前发现5月份的dat和12月份的dat,两个bpa手动快速点击可以进行同时计算,但是最新的
* 12月份的两个dat(修改过名称),不能同时计算,目前没有找到原因,因此多线程计算也会出现问题
* 暂时先注释掉,还是先一个个计算,多线程需要修改i+=2
* BPA_EXE_PATH1=C:\\psap32\\BIN\\pfnt.exe
* BPA_EXE_PATH2=C:\\copypsap32\\psap32\\BIN\\pfnt.exe*/
//if(list.size()-i>=2){//realTimeRiskCallable1= new RealTimeRiskCallable(path,1,Arrays.asList(list.get(i)));//realTimeRiskCallable2= new RealTimeRiskCallable(path,2,Arrays.asList(list.get(i+1)));//result1=new FutureTask(realTimeRiskCallable1);//result2=new FutureTask(realTimeRiskCallable2);//executorService.submit(result1);//Thread.sleep(5000);//executorService.submit(result2);//realTimeRisk=result1.get();//接收返回结果//allResult.add(realTimeRisk);//realTimeRisk2=result2.get();//接收返回结果//allResult.add(realTimeRisk2);//}else{
realTimeRiskCallable1= new RealTimeRiskCallable(path,1,Arrays.asList(list.get(i)));
result1=new FutureTask(realTimeRiskCallable1);
executorService.submit(result1);
realTimeRisk=result1.get();//接收返回结果
allResult.add(realTimeRisk);//}//获取事故事件等级最低的(不为零,等级越低,事故事件等级越高)
event=Integer.parseInt(allResult.get(i).getAccidentEventRank());if(event!=0){if(temp==0){
minVale=event;
temp++;
}else{if(event
minVale=event;
}
}
}
}long endTime=System.currentTimeMillis();
logger.info("耗时:===>"+(endTime-startTime)/1000+"S");
logger.info("===>所有风险计算完成!共有:"+allResult.size()+"条风险记录");