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.

questionAnswers(1)

yourAnswerToTheQuestion