Я работаю в сборке проектов на основе Groovy на вершине JDK1.8.Я хотел бы представить собственную логику создания потоков, основанную на общей логике создания потоков и сумме всех активных потоков в разных пулах потоков.Я инициировал всех определенных потоков-пулов-executor в моем собственном классе сборки ThreadExecutor, как показано ниже,
for(ThreadPoolType threadPoolType:ThreadPoolType.values()) {
executorServiceMap.put(threadPoolType, new ThreadPoolExecutor(
minThreads,
maxThreads,
threadKeepAliveSec,
TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(8),
new CustomizableThreadFactory("pool-${threadPoolType.getPoolName()}-thread-")))
}
В настоящее время мы установили фиксированное число размеров coreSize и maxThread для каждого пула, но это будет пулмудро отличается в реальной реализации.Вот как мы представляем нашу асинхронную задачу:
CompletableFuture<IchibaHttpResponse> post(A a, B b, Executor executor){
return CompletableFuture.supplyAsync({
return someExecutionHere(a, b);
}, executor)
}
Что ж, теперь я хотел бы отслеживать общее количество активных потоков каждый раз, когда on_submit новая задача для исполнителя, и установить пороговый предел для максимальногоколичество активных потоков во всех потоковых пулах.Таким образом, я могу контролировать свои потоки не только с точки зрения максимального размера отдельного пула, но и общего количества потоков.Предположим, для моей оценки максимального размера пула из 4 потоков будет как A (20), B (40), C (60) и D (80).Так что в худшем случае это будет 200 потоков за раз, что может привести к снижению общей производительности системы.Итак, я хотел бы установить другую границу здесь, это предел total_thread_threashold 100. В этом случае для сценария, подобного A (15), B (30), C (35), D (10) = All (100), нетновый поток будет создан, если какое-либо задание отправлено, и для определенной очереди все еще свободна задача будет поставлена в очередь или в противном случае она будет отброшена.Пожалуйста, дайте мне знать, если есть какая-то путаница в понимании моей озабоченности.Спасибо.