Java Executor服务线程池

Izz*_*zza 4 java multithreading executorservice threadpool

如果我使用Executor框架在java中创建一个包含10个线程的固定大小的线程池:

private final ExecutorService pool;
pool = Executors.newFixedThreadPool(10);
Run Code Online (Sandbox Code Playgroud)

然后尝试提交10个以上的任务(例如,12个任务);

for (int i = 0 ; i < 12 ; i++) {
    pool.execute(new Handler(myRunnable));
}
Run Code Online (Sandbox Code Playgroud)

额外任务会发生什么(根据12个任务的例子,额外的两个任务)?在线程完成工作之前它们会被阻塞吗?

Sah*_*hoo 23

引用Javadoc Executors.newFixedThreadPool(int nThreads)(强调我的):

创建一个线程池,该线程池重用在共享的无界队列中运行的固定数量的线程.在任何时候,最多nThreads线程将是活动的处理任务.如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待,直到线程可用.如果任何线程由于在关闭之前执行期间的故障而终止,则在需要执行后续任务时将使用新的线程.池中的线程将一直存在,直到它被明确关闭.

像Java Concurrency Framework一样成熟的代码的Javadoc包含大量的知识.让他们靠近.