2015-02-10 92 views
0

我有一个应用程序有3个线程,我将切换到由ScheduledExecutorService进行管理。当创建这个实例时,你必须指定线程池的大小,但是这是什么?这是否意味着如果我计划运行3个任务,我应该为每个任务创建一个3个线程池大小?Java线程池大小(Executors)

+0

一个很好的文章你是如何创建一个ScheduledExecutorService的? – 2015-02-10 12:21:31

+0

ScheduledExecutorService executor = Executors.newScheduledThreadPool(3); executor.scheduleAtFixedRate(task1,0,period,TimeUnit.MILLISECONDS); – user3469157 2015-02-10 12:31:17

回答

0

假设你已经创建ScheduledExecutorService的这样

ScheduledExecutorService executorService = Executors.newFixedThreadPool(10); 

executorService.execute(new Runnable() { 
    public void run() { 
     System.out.println("Asynchronous task"); 
    } 
}); 

executorService.shutdown(); 

现在这里发生了什么:使用newFixedThreadPool() 工厂方法创建

  • 首先一个ExecutorService。这将创建一个线程池,并执行任务10 threads
  • 其次,传递给execute()方法的Runnable接口的匿名实现是 。这会导致Runnable由ExecutorService中的一个线程执行为 。

线程池管理工作者线程池。 thread pools包含一个工作队列,其中包含等待执行的任务。

现在来到:

这是否意味着,如果我打算上运行3个任务我应该创建一个3每个的 线程池的大小?

是的,以便所有3个任务可以并行执行。

现在这里是约How big should our thread pool be?

+0

非常感谢! – user3469157 2015-02-10 13:59:10