问题描述
我需要知道当您提交比当前池大小更多的任务时 Java 是如何处理的。我有以下代码:
Executor executor = Executors.newFixedThreadPool(2); //2 threads
CompletionService<MyCallable> serv = new ExecutorCompletionService<MyCallable>(executor);
for (int i=0; i<500; i++){
serv.submit(new MyCallable(i));
}
如果 submit 是阻塞调用,是否有任何线索?或者如果线程都忙,它会拒绝任务吗?
谢谢大家。
解决方法
它维护一个任务队列,一旦任务被加入队列,submit
就会返回。它不会等待线程开始执行任务。