como usar Multithreading With ArrayList em Java
Olá ,
Eu tenho um programa que funciona perfeitamente, infelizmente eu tenho alguns cálculos que levam muito tempo, alguns minutos ..
Meu objetivo é usar o multithreading para acelerar as partes que demoram tanto tempo.
Neste exemplo, dou o protótipo da parte que devo paralelizar
public static ArrayList<Object2> createListOfObject2(ArrayList<Object1> mylist) {
ArrayList<Object2> 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<Object1> mylist, int i, int j) {
int weight = MyCalculator.getInstance().calcul(mylist.get(i),mylist.get(j));
Object2 Object2 = new Object2(weight);
return Object2;
}
Como você pode ver, o método
public static ArrayList<Object2> createListOfObject2(ArrayList<Object1> mylist)
obtenha uma lista de Object1 e crie outra lista de object2.
Criei um loop twoo foor e, toda vez que crio um objeto2 formado por dois objetos, ele deve levar O (n²) vezes.
para uma lista maior, leva muito tempo.
Então, onde devo colocar a lista múltipla e qual o tipo de lista que devo usar.
O segundo problema é que a classe MyCalculator é uma classe singleton, e eu crio apenas um objeto e, na minha opinião, mesmo usando multhitreading, o programa real não se beneficiará com multhitreading.
Quais são as regras que devo seguir para usar a multhitreading?
Muito Obrigado.