在使用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” 错误。
具体原因待查。。
相关推荐
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是Java并发编程中的一种重要概念,它提供了一种高效、灵活的线程管理机制。使用线程池可以降低资源消耗,提高响应速度,提高线程的可管理性。 线程池的优点 1. ...
java Executors 使用实例 concurrent.ExecutorService
【Executor、Executors和ExecutorService详解】 在Java并发编程中,`Executor`、`Executors`和`ExecutorService`是核心组件,它们帮助开发者高效管理线程资源,提高程序的并发性能。理解这三个概念的区别和用途是...
Java中Executors类中几种创建各类型线程池方法及简单实例
《深入解析Java Executors源码》 在Java多线程编程中,`java.util.concurrent.Executors`类扮演着至关重要的角色。它提供了一系列静态工厂方法,用于创建和管理线程池,以及与之相关的ExecutorService、...
`java.util.concurrent.Executors` 继承自 `java.lang.Object`,作为一个工具类,它提供了一系列用于创建和管理线程池的方法,包括`ExecutorService`、`ScheduledExecutorService`、`ThreadFactory`和`Callable`等...
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实现数据批量操作。 批量异步Executors处理数据,实现限流操作,QPS限流。 线程池调用第三方接口限流实现逻辑。 案例适合: 1.批量处理大数据。 2.数据批量导出。 3任务数据异步执行。 4.多线程...
顶层接口Executors详解 Executors框架是Java语言中用于异步执行任务的高级接口,旨在提供一个高效、灵活、可扩展的任务执行机制。该框架提供了一个两级调度模型,第一级是用户级的调度器,第二级是操作系统内核的...
NULL 博文链接:https://bijian1013.iteye.com/blog/2284676
Thread t = new Thread(new MyRunnable()); t.start(); ``` 3. 实现Callable接口 `Callable`接口与`Runnable`类似,但其`call()`方法可以返回值,并且可以抛出受检查异常。使用`FutureTask`包装`Callable`对象,...
Java并发编程中,`java.util.concurrent.Executors` 类是一个至关重要的工具类,它提供了一系列静态方法,用于创建和管理线程池以及相关的线程执行服务。`Executors` 类简化了线程池的创建和线程的调度,使得开发者...
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 框架的重要组件,用于提供线程池的功能。在 Java 1.5 之后,Executor 框架提供了多种...
理解`Executors`类的用法仅仅是Java并发编程的一部分,还需要掌握`Future`、`Callable`接口,以及`Runnable`和`Thread`的区别。此外,`ExecutorService`接口提供的`submit()`、`execute()`等方法也是并发编程中经常...
- `ThreadGroup.enumerate(Thread[] threads)`:返回线程组中所有活动线程的数组。 - `ThreadGroup.enumerate(ThreadGroup[] groups)`:返回线程组中所有子线程组的数组。 - `ThreadGroup.activeCount()`:返回...
在Java多线程编程中,异常处理是一项关键的机制,特别是在多线程环境下,由于线程的并发执行,处理异常的方式与单线程有所不同。本文将深入探讨Java多线程中的异常捕捉,以及如何有效地在多线程环境中处理异常。 ...
标题 "C++ library for executors.zip" 暗示了一个关于C++编程的库,它专注于执行器(executors)的概念。执行器是C++并发编程中的一个重要组件,它们负责调度和执行任务,有助于管理线程和资源。在这个库中,可能...
Executors类的基本用法 2.1 创建线程池 2.2 提交任务 2.3 关闭线程池 线程池的分类 3.1 FixedThreadPool 3.2 CachedThreadPool 3.3 ScheduledThreadPool 3.4 SingleThreadExecutor 3.5 WorkStealingPool 线程池的...