Java可调用和未来
我正在使用Java Callable,所以我正在编写一个运行并行任务的函数,它在第一次调用时运行得很好,但在另一次调用中,我的函数重复了迭代次数 请有人告诉我哪里出错了 这是我的代码:Java可调用和未来,java,callable,Java,Callable,我正在使用Java Callable,所以我正在编写一个运行并行任务的函数,它在第一次调用时运行得很好,但在另一次调用中,我的函数重复了迭代次数 请有人告诉我哪里出错了 这是我的代码: public void setInitialCost(List<Trajet> trajets) { int cores = Runtime.getRuntime().availableProcessors(); executor = Executors.newFixedThreadP
public void setInitialCost(List<Trajet> trajets) {
int cores = Runtime.getRuntime().availableProcessors();
executor = Executors.newFixedThreadPool(cores);
List<Future<Double>> futures = new ArrayList<Future<Double>>();
for (int i = 0; i < trajets.size(); i++) {
Future<Double> future = executor.submit(new CallableCostCalculator(trajets.get(i).getPlannedTrips(), startPlanningView));
futures.add(future);
System.out.println("iteration" + i);
}
executor.shutdown();
for (int j = 0; j < futures.size(); j++) {
try {
trajets.get(j).setCost(futures.get(j).get());
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void setInitialCost(列出trajets){
int cores=Runtime.getRuntime().availableProcessors();
executor=Executors.newFixedThreadPool(核心);
列表期货=新的ArrayList();
对于(int i=0;i
这是2次成功调用的结果:
我从这个控制器调用我的函数:
@Autowired
RechercheTabouService rechercheTabouService;
@Autowired
PlannedTripService plannedTripService;
public void test() {
System.out.println("start test");
DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date date;
try {
date = dateFormat.parse("12/11/2017");
rechercheTabouService.setPlannedTrips(plannedTripService.findPlannedTripByDate(date, 1512127292, 200));
} catch (Exception e) {
e.printStackTrace();
}
rechercheTabouService.setInitialSolution();
List<Trajet> initial = rechercheTabouService.getInitialSolution();
rechercheTabouService.setInitialCost(initial);
System.out.println("initial :" + rechercheTabouService.calculCostSolution(initial));
@RequestMapping("/tabou")
public Integer runtest () {
test();
return 1;
}
}
@Autowired
RechercheTabouService RechercheTabouService;
@自动连线
PlannedTripService PlannedTripService;
公开无效测试(){
系统输出打印项次(“启动测试”);
DateFormat DateFormat=新的简化格式(“MM/dd/yyyy”);
日期;
试一试{
日期=dateFormat.parse(“2017年11月12日”);
rechercheTabouService.setPlannedTrips(plannedTripService.findPlannedTripByDate(日期:1512127292200));
}捕获(例外e){
e、 printStackTrace();
}
rechercheTabouService.setInitialSolution();
List initial=rechercheTabouService.getInitialSolution();
rechercheTabouService.setInitialCost(初始);
System.out.println(“初始:+rechercheTabouService.calculCostSolution(初始));
@请求映射(“/tabou”)
公共整数运行测试(){
test();
返回1;
}
}
请向我们展示调用方法的代码setInitialCost()
。听起来您没有在调用之间清除trajets
参数。Georg我正在更新我的帖子Kayaman我必须如何清除trajets你能解释更多吗