`

Executors的Thread table can't grow past 16383 threads异常

    博客分类:
  • java
 
阅读更多

在使用executors并发编程时候需要注意,如果出现Thread table can't grow past 16383 threads异常,详情如下:

[WARN ] Thread table can't grow past 16383 threads.
[ERROR][thread ] Could not start thread pool-7975-thread-1. errorcode -1
Exception in thread "Thread-1445" java.lang.Error: errorcode -1
	at java.lang.Thread.start0(Native Method)
	at java.lang.Thread.start(Thread.java:597)
	at java.util.concurrent.ThreadPoolExecutor.addIfUnderCorePoolSize(ThreadPoolExecutor.java:703)
	at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:652)
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:92)

 需要注意在finally中需要调用shutdown()方法。

 

测试程序如下:

import java.util.concurrent.*;
public class Test{
        public static void main(String[] args){
                while (true){
                    ExecutorService es = null;
                    try {
                        es = Executors.newCachedThreadPool();

                        for (int i = 0; i < 2; i++) {
                            es.submit(new Car());
                        }

                    } catch (RuntimeException e) {
                        e.printStackTrace();
                        continue;
                    } finally {
                        es.shutdown();
                    }

                }

         }

        public static class Car implements Runnable {
        public void run() {
            System.out.println("Car <" + Thread.currentThread().getName()
                    + "> doing something");


        }
    }

}

 

若 注释掉es.shutdown()这一行,会出现 “[WARN ] Thread table can't grow past 16383 threads.

[ERROR][thread ] Could not start thread pool-8062-thread-1. errorcode -1

Exception in thread "Main Thread" java.lang.Error: errorcode -1” 错误。

具体原因待查。。

分享到:
评论

相关推荐

    Java.Threads.and.the.Concurrency.Utilities.1484216997

    This concise book empowers all Java developers to master the complexity of the Java thread APIs and concurrency utilities. This knowledge aids the Java developer in writing correct and complex ...

    线程池 Executors

    Java中的线程池Executors java中的线程池Executors是Java并发编程中的一种重要概念,它提供了一种高效、灵活的线程管理机制。使用线程池可以降低资源消耗,提高响应速度,提高线程的可管理性。 线程池的优点 1. ...

    Executors 使用实例

    java Executors 使用实例 concurrent.ExecutorService

    Executor,Executors,ExecutorService比较.docx

    【Executor、Executors和ExecutorService详解】 在Java并发编程中,`Executor`、`Executors`和`ExecutorService`是核心组件,它们帮助开发者高效管理线程资源,提高程序的并发性能。理解这三个概念的区别和用途是...

    Java中Executors类中几种创建各类型线程池

    Java中Executors类中几种创建各类型线程池方法及简单实例

    5_Executors源码阅读1

    《深入解析Java Executors源码》 在Java多线程编程中,`java.util.concurrent.Executors`类扮演着至关重要的角色。它提供了一系列静态工厂方法,用于创建和管理线程池,以及与之相关的ExecutorService、...

    java 线程池管理类:Executors_.docx

    `java.util.concurrent.Executors` 继承自 `java.lang.Object`,作为一个工具类,它提供了一系列用于创建和管理线程池的方法,包括`ExecutorService`、`ScheduledExecutorService`、`ThreadFactory`和`Callable`等...

    Java Threads and the Concurrency Utilities(Apress,2015)

    This concise book empowers all Java developers to master the complexity of the Java thread APIs and concurrency utilities. This knowledge aids the Java developer in writing correct and complex ...

    Java多线程Executors批量执行数据实现限流

    java线程池Executors实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。 2.数据批量导出。 3任务数据异步执行。 4.多线程...

    顶层接口Executors详解

    顶层接口Executors详解 Executors框架是Java语言中用于异步执行任务的高级接口,旨在提供一个高效、灵活、可扩展的任务执行机制。该框架提供了一个两级调度模型,第一级是用户级的调度器,第二级是操作系统内核的...

    线程池实例:使用Executors和ThreadPoolExecutor

    NULL 博文链接:https://bijian1013.iteye.com/blog/2284676

    8种常用创建线程的方法thread.zip

    Thread t = new Thread(new MyRunnable()); t.start(); ``` 3. 实现Callable接口 `Callable`接口与`Runnable`类似,但其`call()`方法可以返回值,并且可以抛出受检查异常。使用`FutureTask`包装`Callable`对象,...

    Java并发编程中使用Executors类创建和管理线程的用法

    Java并发编程中,`java.util.concurrent.Executors` 类是一个至关重要的工具类,它提供了一系列静态方法,用于创建和管理线程池以及相关的线程执行服务。`Executors` 类简化了线程池的创建和线程的调度,使得开发者...

    Java 7 Concurrency Cookbook

    Chapter 4, Thread Executors will teach the readers to delegate the thread management to executors. They allow running, managing, and getting the results of concurrent tasks. Chapter 5, Fork/Join ...

    java 中Executor, ExecutorService 和 Executors 间的不同

    Java 中 Executor, ExecutorService 和 Executors 的不同 Java 中的 Executor, ExecutorService 和 Executors 是 Java Executor 框架的重要组件,用于提供线程池的功能。在 Java 1.5 之后,Executor 框架提供了多种...

    Java并发编程中使用Executors类创建和管理线程的

    理解`Executors`类的用法仅仅是Java并发编程的一部分,还需要掌握`Future`、`Callable`接口,以及`Runnable`和`Thread`的区别。此外,`ExecutorService`接口提供的`submit()`、`execute()`等方法也是并发编程中经常...

    关于Thread讲解

    - `ThreadGroup.enumerate(Thread[] threads)`:返回线程组中所有活动线程的数组。 - `ThreadGroup.enumerate(ThreadGroup[] groups)`:返回线程组中所有子线程组的数组。 - `ThreadGroup.activeCount()`:返回...

    Java多线程之多线程异常捕捉

    在Java多线程编程中,异常处理是一项关键的机制,特别是在多线程环境下,由于线程的并发执行,处理异常的方式与单线程有所不同。本文将深入探讨Java多线程中的异常捕捉,以及如何有效地在多线程环境中处理异常。 ...

    C++ library for executors.zip

    标题 "C++ library for executors.zip" 暗示了一个关于C++编程的库,它专注于执行器(executors)的概念。执行器是C++并发编程中的一个重要组件,它们负责调度和执行任务,有助于管理线程和资源。在这个库中,可能...

    Java中的Executors类最全讲义

    Executors类的基本用法 2.1 创建线程池 2.2 提交任务 2.3 关闭线程池 线程池的分类 3.1 FixedThreadPool 3.2 CachedThreadPool 3.3 ScheduledThreadPool 3.4 SingleThreadExecutor 3.5 WorkStealingPool 线程池的...

Global site tag (gtag.js) - Google Analytics