你好 ,
我有一个可以完美运行的程序,不幸的是,我有一些计算需要很多时间,几分钟..
我的目标是使用多线程来加速耗时的部件.
在此示例中,我给出了我应该并行化的部分的原型
public static ArrayList createListOfObject2(ArrayList mylist) {
ArrayList listToReturn = new ArrayList<>();
Object2 object2;
for (int i = 0; i < mylist.size(); i++) {
for (int j = 0; j < mylist.size(); j++) {
object2 = heavyCalcul(mylist, i, j);
listToReturn.add(object2);
}
}
return listToReturn;
}
private static Object2 heavyCalcul(ArrayList mylist, int i, int j) {
int weight = MyCalculator.getInstance().calcul(mylist.get(i),mylist.get(j));
Object2 Object2 = new Object2(weight);
return Object2;
}
如您所见,该方法
public static ArrayList createListOfObject2(ArrayList mylist)
获取Object1的列表,并应创建另一个object2列表.
我进行了二次循环,每次创建由两个对象形成的object2时,它应该花费O(n?)次.
要获得更大的清单,需要花费很长时间.
因此,我应该在哪里使用应该使用的多重列表和夹心类型的列表.
第二个问题是MyCalculator类是一个单例类,并且我仅创建一个对象,并且我认为即使使用mulread读取,实际程序也不会受益于mulread读取.
使用多重阅读应遵循哪些规则?
非常感谢.