Как лучше всего запускать и обрабатывать тысячи потоков в Java?

1

Я хочу реализовать один сценарий, когда мне, возможно, придется обрабатывать тысячи потоков (количество потоков не фиксировано, но может варьироваться в диапазоне 1000-5000). Ниже приведен один очень известный способ выполнения этой реализации, но я думаю, что это не оптимизированный способ сделать это. Любой другой оптимизированный способ сделать это? В принципе, я не хочу начинать с фиксированного размера пула потоков?

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
  private static final int NTHREDS = 1000;

  public static void main(String[] args) {
    ExecutorService executor = Executors.newFixedThreadPool(NTHREDS);
    for (int i = 0; i < 500; i++) {
      Runnable worker = new MyRunnable(10000000L + i);
      executor.execute(worker);
    }
}
Теги:
concurrency

1 ответ

2

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

См.: Executors.newCachedThreadPool

Изменение кода:

ExecutorService executor = Executors.newCachedThreadPool();
  • 0
    Спасибо Vikingsteve, это то, что я искал.
  • 0
    Добро пожаловать! Рад, что это сработало.

Ещё вопросы

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