如果我使用Executor框架在Java中创建具有10个线程的固定大小的线程池:
private final ExecutorService pool;
pool = Executors.newFixedThreadPool(10);
然后尝试提交10个以上的任务(例如,12个任务);
for (int i = 0 ; i < 12 ; i++) {
pool.execute(new Handler(myRunnable));
}
额外任务会发生什么(按照12个任务的示例,另外两个任务)?它们会在线程完成工作之前被阻塞吗?
将Javadoc引用为Executors.newFixedThreadPool(int nThreads)
(强调我的):
创建一个线程池,该线程池重用在共享的无边界队列上操作的固定数量的线程。在任何时候,最多nThreads个线程都是活动的处理任务。如果在所有线程都处于活动状态时提交了其他任务,则它们将在队列中等待,直到某个线程可用为止。如果在关闭之前执行过程中由于执行失败导致任何线程终止,则在执行后续任务时将使用新线程代替。池中的线程将一直存在,直到明确将其关闭。
像Java并发框架一样成熟的Javadoc包含丰富的知识。保持靠近。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句