java 线程callable_实现多线程Callable接口

这段代码展示了如何使用多线程进行计算,特别是在处理RealTimeRisk任务时。尽管发现在特定情况下,某些数据无法同时计算,导致多线程实现存在问题,目前采取单线程处理。程序记录了计算耗时,并对计算结果进行了事件等级评估,寻找最低事件等级。最后,输出了所有风险记录的数量。
摘要由CSDN通过智能技术生成

/*** 多线程进行计算*/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()+"条风险记录");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值