Все доступные конструкторы ScheduledThreadPoolExecutor требуют аргумента corePoolsize
. Но я не уверен, сколько мне действительно нужно?Java ScheduledThreadPoolExecutor, определяющий, сколько потоков необходимо
Я планирую использовать его в классе, где один экземпляр его будет использовать только одну запланированную задачу. Поэтому бессмысленно устанавливать размер пула на что-либо еще, кроме 1? Или мне нужно создать статический экземпляр ScheduledThreadPoolExecutor для совместного использования всех экземпляров моего собственного класса?
Уход за разъяснением этого руководства? Я не думаю, что это хороший ориентир, особенно для дела OP. –
Основываясь на моем понимании, OP ищет размер пула при создании ScheduledThreadPoolExecutor. В любой заданной точке машина/процессор может обрабатывать только N количество потоков, где N - количество ядер. Например, если машина является четырехъядерной, это означает, что параллельно можно запускать только 4 потока, поэтому нет смысла создавать пул большего размера. Пул с количеством ядер + 2 (чтобы помочь с переключением контекста) может быть достаточно хорошим, чтобы получить хорошую производительность. – kosa
Во многих случаях * * делает большой смысл создавать больше потоков, чем количество процессоров. Наиболее распространенный случай - это когда вы хотите распараллелить IO. У вас может быть много потоков, ожидающих ввода-вывода на одном ядре ... Если вы выполняете 100% -ные задачи с привязкой к ЦП, я склонен согласиться с вашей мыслью, но это довольно предположение. –