List<String> listOfNames = new ArrayList<>();for(
String name:listOfNames) { ///WANT TO PASS THIS VALUE IN THIS FUNCTION AND THIS FUNCTION WILL BE RUN IN PARALLEL FOR ALL INDEXES
myfunct(name){
//dosomething
}
"//сделать что-то //предположим, sysout(name);" если мы допустим это, то не будет никакого преимущества в многопоточности. Он просто напечатал бы имена в непредсказуемом порядке.
Просто
listOfNames.parallelStream().forEach( name -> {
// do something
});
уже сделал бы.
Дело в том, что существует миллионы способов сделать это, и все они подробно задокументированы. Я предлагаю вам начать здесь, например. И, как правильно сказал Энди: «просто добавление потоков» не обязательно является улучшением. Больше потоков не означает автоматически «лучше». Наоборот, они усложняют отслеживание и понимание кода и открывают целую вселенную для добавления потенциальных ошибок.
"просто" в вопросе многопоточности? Смешной.
@AndyTurner Простой в том смысле, что ответ отражает количество энергии, которую ОП вложил в свой вопрос. Это означает, что «это можно сделать с помощью однострочного, но» руководства.
Я бы также добавил к абзацу «миллионы», что многопоточность не делает их автоматически лучше. Должно быть что-то параллелизуемое в выполняемой работе (распечатка не parallelizable); и вы должны позаботиться о том, чтобы убедиться, что он безопасно распараллелен; и использование parallelStream()
может привести к конфликту с другими местами в той же программе, которые также используют его. Итак, возвращаясь к моему первоначальному комментарию: это может быть не так уж и «просто».
List<String> listOfNames = asList("a", "b", "c");
listOfNames
.parallelStream()
.forEach(System.out::print);
приведет, например.
bca
сэр, внутри этого цикла происходит несколько исполнений!
я хочу получить краткий ответ на этот вопрос о том, как я могу выполнить несколько задач внутри этого цикла.
Обратите внимание, что разрыв после .
не является обычным в Java. Руководство по стилю Sun (на котором основаны многие последующие руководства по стилю) говорит о том, что вы должны прерываться перед операторами: это помогает вам увидеть, что новая строка является продолжением предыдущей.
@saadamin Добро пожаловать, и спасибо за быстрое возвращение!
Добро пожаловать в Stack Overflow! Пожалуйста, возьмите тур (вы получите значок!) и прочитайте центр помощи, в частности Как задать хороший вопрос?. Лучше всего провести исследование, поиск для связанных тем на SO, и попробовать. Если вы застряли и не можете выбраться после дополнительных исследований и поиска, опубликуйте минимальный воспроизводимый пример свою попытку и конкретно укажите, где вы застряли. Люди будут рады помочь.