Как заставить ExecutorService создавать n потоков, выполняющих точно такую ​​же задачу? - PullRequest
0 голосов
/ 11 июля 2019

Я следую этому примеру

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

Однако яЯ хотел бы создать только одну задачу, которая будет выполняться n потоками.

int numberOfThreads = 2;
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
Runnable task1 = () -> {
  System.out.println("Executing Task1 inside : " + 
  Thread.currentThread().getName());
  try {
    TimeUnit.SECONDS.sleep(2);
  } catch (InterruptedException ex) {
    throw new IllegalStateException(ex);
  }
};
executorService.submit(task1, numberOfThreads); // This is not like this obviously

Как я могу добиться этого более правильным способом?

1 Ответ

2 голосов
/ 11 июля 2019

В этом нет никакой магии. Все, что вам нужно сделать, это отправить одну и ту же задачу несколько раз, например:

public static void main(String args[]) {
    int numberOfThreads = 2;
    ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
    Runnable task1 = () -> {
      System.out.println("Executing Task1 inside : " + 
      Thread.currentThread().getName());
      try {
        TimeUnit.SECONDS.sleep(2);
      } catch (InterruptedException ex) {
        throw new IllegalStateException(ex);
      }
    };
    executorService.submit(task1);
    executorService.submit(task1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...