限制Java中的并发线程数

时间:2019-03-21 04:02:10

标签: java multithreading

我正在根据用户输入的日期运行多个线程。 如果用户输入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();
            }

1 个答案:

答案 0 :(得分:2)

这是相对简单的:您可以创建基于线程池的ExecutorService。然后,您提交给该服务的任务将由基础池的线程处理。

有关简单示例,请参见here。或来自oracle的“官方” documentation关于如何配置此类线程池的细微差别。