我正在根据用户输入的日期运行多个线程。 如果用户输入15个日期,它将并行运行15个线程,并连续10个日期,它将并行运行10个线程
无论用户输入如何,我都需要设置上限,例如,它应该始终运行5个线程。我看到ExecutorService可以做到,但不确定如何实现相同的
下面是我的示例代码,并要求如何在此上实现ExecutorService-
List<FactorialThread> threads = new ArrayList<>();
int position = 0;
for (String query:QueryList)
{
position++;
Thread.currentThread().setName("Thread - "+ position);
System.out.println(" Inside run thread method executing the query for ..."+query + "for index " + position );
threads.add(new FactorialThread(FileName,query,Thread.currentThread().getName()));
}
for (Thread thread : threads) {
// thread.setDaemon(true);
thread.setName("Thread"+thread);
thread.start();
}
答案 0 :(得分:2)
这是相对简单的:您可以创建基于线程池的ExecutorService。然后,您提交给该服务的任务将由基础池的线程处理。
有关简单示例,请参见here。或来自oracle的“官方” documentation关于如何配置此类线程池的细微差别。