java - java中的线程池执行器只允许10个线程,一旦提交第11个线程,它就会给出异常,说已达到最大限制

标签 java multithreading

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/

相关文章:

java - 仅当是数字时才允许在 JTextField 上存储字符

java - 如何使用 Jakarta POI 从 ms word 文件中读取内容

java - 在 Swing JAVA 中刷新表模型或 GUI

c++ - 将参数从主线程传递到线程。当线程退出时,主线程重置为0。为什么?

java - 如何在执行程序服务中使用数据排队

java - 使用 Intent 发送和接收 Arraylist?安卓

java - Java:放入十进制数字时会崩溃[RESOLVE]

c# - 从多个线程渲染到单个 Bitmap 对象

C# VSTO : How to block a user from interacting with client (Excel) for a brief period?

java - 为什么没有调用run方法?