Также предостережение перед использованием параллельного потока. Нет. потоков, которые использует ParallelsStream, являются общими для jvm, т.е. они имеют общий пул потоков. Поэтому для расчетов можно использовать параллельный поток, но если в ваших расчетах используются сетевые вызовы, вам следует избегать его, поскольку он заблокирует ваши потоки, и следующие запросы будут находиться в состоянии ожидания до завершения этих задач.

т ,

У меня есть программа, которая работает отлично, к сожалению, у меня есть несколько исчислений, которые занимают много времени, несколько минут ..

Моя цель - использовать многопоточность для ускорения частей, которые занимают так много времени.

В этом примере я даю прототип той части, которую я должен распараллелить

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;
}

Как вы могли видеть, метод

public static ArrayList<Object2> createListOfObject2(ArrayList<Object1> mylist)

получить список Object1, и должен создать еще один список object2.

Я сделал два цикла Loop, и каждый раз, когда я создаю объект 2, формирующийся двумя объектами, это должно занять O (n²) раз.

для большего списка это занимает много времени.

Так, где я должен поместить многопоточный и какой тип списка я должен использовать.

Вторая проблема заключается в том, что класс MyCalculator является одноэлементным классом, и я создаю только один его объект, и, на мой взгляд, даже использование многопоточности реальной программы не принесет пользы многопоточности.

Каким правилам я должен следовать, чтобы использовать многопоточность?

Большое спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос