-
ThreadPoolExecutor 用法的疑问10
import java.io.Serializable;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestThreadPool {
private static int produceTaskSleepTime = 2;
private static int consumeTaskSleepTime = 2000;
private static int produceTaskMaxNumber = 20;
public static void main(String[] args) throws Exception
{
//构造一个线程池
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(1, 10, 3, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(3), new ThreadPoolExecutor.CallerRunsPolicy ());
for(int i=1;i<=produceTaskMaxNumber;i++)
{
try
{
//产生一个任务,并将其加入到线程池
String task = "task@ " +i;
//System.out.println("put " + task);
ThreadPoolTask a =new ThreadPoolTask(task);
threadPool.execute(a);
a= null;
//便于观察,等待一段时间
//Thread.sleep(1);
}
catch (Exception e)
{
System.out.println("error-------");
e.printStackTrace();
}
}
/**
* 线程池执行的任务
* @author hdpan
*/
public static class ThreadPoolTask implements Runnable,Serializable
{
private static final long serialVersionUID = 0;
//保存任务所需要的数据
private Object threadPoolTaskData;
ThreadPoolTask(Object tasks)
{
this.threadPoolTaskData = tasks;
}
public void run()
{
System.out.println("start .."+threadPoolTaskData);
try
{
////便于观察,等待一段时间
Thread.sleep(1000);
}
catch (Exception e)
{
e.printStackTrace();
}
threadPoolTaskData = null;
}
public Object getTask()
{
return this.threadPoolTaskData;
}
}
}
//1、在命令行下编译上面的java文件,并执行,java TestThreadPool 程序执行完,退出。
//2、把produceTaskMaxNumber 改成2后,再编译执行 java TestThreadPool 程序执行完 不退出
为什么会这样呢,谁帮忙解释下呢,纠结了1天,看了api也没看懂,谢谢2012年7月30日 14:48
目前还没有答案
相关推荐
主要介绍了java ThreadPoolExecutor使用方法简单介绍的相关资料,需要的朋友可以参考下
要使用`ThreadPoolExecutor`,首先需要导入模块: ```python from concurrent.futures import ThreadPoolExecutor ``` ### 创建线程池 创建线程池时,可以指定`max_workers`参数来设置最大工作线程的数量。例如,...
* 降低了系统的开销:ThreadPoolExecutor 可以重复使用线程,避免了频繁创建和销毁线程的开销。 * 提高了系统的灵活性:ThreadPoolExecutor 可以根据不同的工作负载动态地调整线程池的大小。 ThreadPoolExecutor 的...
(转)线程池:java_util_ThreadPoolExecutor 比较详细的介绍了ThreadPoolExecutor用法与属性
ThreadPoolExecutor使用和思考
ThreadPoolExecutor源码解析.md
线程池ThreadPoolExecutor使用简介与方法实例 线程池ThreadPoolExecutor是Java并发编程中一个非常重要的概念,它允许开发者将任务提交给线程池,并由线程池来管理这些任务的执行。今天,我们将对线程池...
- 使用Worker集合来管理所有工作线程,确保线程安全。 了解ThreadPoolExecutor的这些核心概念和工作流程,能帮助开发者更好地调整线程池参数,优化并发性能,以及在系统出现问题时进行排查和定位。在实际开发中,...
ThreadPoolExecutor线程池的使用方法 ThreadPoolExecutor线程池是Java提供的开发框架,管理线程的创建、销毁、优化、监控等。它提供了四种不同的任务队列:ArrayBlockingQueue、LinkedBlockingQueue、...
从Python3.2开始,标准库为我们提供了 concurrent.futures 模块,它提供了 ThreadPoolExecutor (线程池)和ProcessPoolExecutor (进程池)两个类。 相比 threading 等模块,该模块通过 submit 返回的是一个 future ...
创建线程池使用`ThreadPoolExecutor`构造函数,其参数含义如下: - `corePoolSize`: 核心线程数,表示线程池中保持的最小线程数。 - `maximumPoolSize`: 最大线程数,定义了线程池允许的最大并发线程数。 - `...
"JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用" JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用是Java多线程编程中的一种重要概念。随着多线程编程的普及,线程池的使用变得...
ThreadPoolExecutor的使用和Android常见的4种线程池使用介绍
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long
线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor实战及其原理分析(下)线程池ThreadPoolExecutor...
在《阿里巴巴java开发手册》中...另外由于前面几种方法内部也是通过ThreadPoolExecutor方式实现,使用ThreadPoolExecutor有助于大家明确线程池的运行规则,创建符合自己的业务场景需要的线程池,避免资源耗尽的风险。
如果线程池中的线程超过60秒未被使用,则该线程将被回收,以节省资源。适用于执行大量短暂的异步任务。 ```java public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, ...
NULL 博文链接:https://bijian1013.iteye.com/blog/2284676