Я хочу выполнить эту функцию как поток для всех значений в списке с помощью многопоточности, пожалуйста, помогите мне

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
}

Добро пожаловать в Stack Overflow! Пожалуйста, возьмите тур (вы получите значок!) и прочитайте центр помощи, в частности Как задать хороший вопрос?. Лучше всего провести исследование, поиск для связанных тем на SO, и попробовать. Если вы застряли и не можете выбраться после дополнительных исследований и поиска, опубликуйте минимальный воспроизводимый пример свою попытку и конкретно укажите, где вы застряли. Люди будут рады помочь.

T.J. Crowder 29.07.2019 08:44

"//сделать что-то //предположим, sysout(name);" если мы допустим это, то не будет никакого преимущества в многопоточности. Он просто напечатал бы имена в непредсказуемом порядке.

Andy Turner 29.07.2019 08:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
2
174
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Просто

listOfNames.parallelStream().forEach( name -> {
  // do something
});

уже сделал бы.

Дело в том, что существует миллионы способов сделать это, и все они подробно задокументированы. Я предлагаю вам начать здесь, например. И, как правильно сказал Энди: «просто добавление потоков» не обязательно является улучшением. Больше потоков не означает автоматически «лучше». Наоборот, они усложняют отслеживание и понимание кода и открывают целую вселенную для добавления потенциальных ошибок.

"просто" в вопросе многопоточности? Смешной.

Andy Turner 29.07.2019 08:47

@AndyTurner Простой в том смысле, что ответ отражает количество энергии, которую ОП вложил в свой вопрос. Это означает, что «это можно сделать с помощью однострочного, но» руководства.

GhostCat 29.07.2019 08:49

Я бы также добавил к абзацу «миллионы», что многопоточность не делает их автоматически лучше. Должно быть что-то параллелизуемое в выполняемой работе (распечатка не parallelizable); и вы должны позаботиться о том, чтобы убедиться, что он безопасно распараллелен; и использование parallelStream() может привести к конфликту с другими местами в той же программе, которые также используют его. Итак, возвращаясь к моему первоначальному комментарию: это может быть не так уж и «просто».

Andy Turner 29.07.2019 09:08
List<String> listOfNames = asList("a", "b", "c");
listOfNames
    .parallelStream()
    .forEach(System.out::print); 

приведет, например.

bca

сэр, внутри этого цикла происходит несколько исполнений!

saadamin 29.07.2019 09:04

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

saadamin 29.07.2019 09:05

Обратите внимание, что разрыв после . не является обычным в Java. Руководство по стилю Sun (на котором основаны многие последующие руководства по стилю) говорит о том, что вы должны прерываться перед операторами: это помогает вам увидеть, что новая строка является продолжением предыдущей.

Andy Turner 29.07.2019 09:12

@saadamin Добро пожаловать, и спасибо за быстрое возвращение!

GhostCat 30.07.2019 09:08

Другие вопросы по теме