Привет всем, я довольно новичок во всех вещах java-параллелизма, так что извините, если мой вопрос звучит немного наивно.Дело в том, что я пытаюсь отправить задачи в службу исполнителя в цикле и немедленно возвращаю будущее, возвращенное в списке.Теперь в другом цикле я перебираю список фьючерсов и вызываю get на будущее, чтобы получить реальный результат.Что меня беспокоит, так это то, что я ожидаю, что будущее будет в том же порядке, что и отправка, но я получаю совершенно случайный порядок. Вот мой код
for (int count = 0; count < product_ID_List.size(); count++) {
System.out.println(product_ID_List.get(count));
WebServiceCall WebServiceCall = new WebServiceCall(basePath, product_ID_List.get(count),
companyId);
futureList.add(executor.submit(WebServiceCall));
}
, вызов веб-службы в основном вставляет запись в базу данных.и возвращает автоматически сгенерированный идентификатор
И вот код для итерации по будущему. List
for (int count = 0; count < futureList.size(); count++) {
Response resp = futureList.get(count).get();
BResponse bresponse = new BResponse();
bresponse = resp.readEntity(BResponse.class);
System.out.println("the generated id is @ " + bresponse.generatedPOID);
}
Теперь в совершенно новой таблице я обычно ожидаю, что результат будет 1,2,3поскольку первая отправленная задача генерирует идентификатор 1 и т. д., но результат, который я получаю, является случайным, например 3,1,2, 2,3,1 и т. д. Нужна помощь в том, как получить фьючерсы, поддерживаемые вПорядок выполнения задания был представлен. Отметим, что речь не идет о порядке выполнения задания.