Параллельно для цикла с конкретным количеством потоков

1

Каков наилучший способ реализации параллельного цикла с указанным числом потоков? Как это:

int maxThreads=5;
int curretnThreads=0;

for(int i = 0; i < 10000; i++){

   if(currentThreads<maxThreads){

      start thread...... 

   }else{
        wait...
   }

}
  • 1
    « Что такое лучший способ » определить «лучший».
  • 0
    @Pshemo лучший способ = использовать runnable , класс thread или как?
Показать ещё 1 комментарий
Теги:
multithreading

1 ответ

2

Я бы сначала создал ForkJoinPool с фиксированным количеством потоков:

final ForkJoinPool forkJoinPool = new ForkJoinPool(numThreads);

Теперь просто выполните операцию параллельного потока в задаче:

forkJoinPool.submit(() -> {
    IntStream.range(0, 10_000)
            .parallel()
            .forEach(i -> {
                //do stuff
            });
});

Очевидно, что этот пример просто переводит ваш код буквально. Я бы рекомендовал вам использовать Stream API в полном объеме, а не только в цикле [0, 10,000).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню