java中的线程池执行器只允许10个线程,一旦提交第11个线程,它就会给出异常,说已达到最大限制
谁能帮忙
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(new Processor(1));
executor.submit(new Processor(2));
executor.submit(new Processor(3));
executor.submit(new Processor(4));
}
这里等待没有显示任何异常
最佳答案
您需要像这样更改 ThreadPoolExecutor 属性 -
ThreadPoolExecutor executor = new ThreadPoolExecutor(10, 10, 0L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
使用允许 0 队列大小的 SynchronousQueue。因此,一旦您提交第 11 个任务,执行器就会拒绝该任务并抛出异常。
关于java - java中的线程池执行器只允许10个线程,一旦提交第11个线程,它就会给出异常,说已达到最大限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29341040/