- 浏览: 1989049 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (509)
- JavaEE (122)
- Oracle数据库 (29)
- JavaScript (37)
- SAP (5)
- MySql数据库 (7)
- JavaSE (4)
- Ajax (1)
- jQuery (13)
- SSH框架 (36)
- Web Service (10)
- JSF框架 (2)
- JBPM (0)
- ireport报表 (2)
- ibatis (5)
- Hibernate (31)
- JSP (11)
- Tomcat 服务器 (20)
- Other (19)
- JavaWeb (4)
- Maven (11)
- OSWorkFlow (10)
- HTML (13)
- Exception汇总 (7)
- SVN (2)
- 笑话 (1)
- JSTL (1)
- WebSphere Message Broker (13)
- ANT命令 (3)
- Liunx (12)
- Struts2 (26)
- Eclipse (6)
- DOS (3)
- Flex (11)
- WebSphere (1)
- 开发常用工具 (3)
- Junit (2)
- EJB (4)
- Struts1.2 (2)
- Jboss (1)
- Android (2)
- Java框架源码解析 (1)
- Spring (4)
- MyBatis (6)
- SpringMVC (4)
- Jetty (2)
- 数据库表设计 (1)
- SSO (4)
最新评论
-
贝塔ZQ:
也可以试试PageOffice插件,觉得更简单点
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度 -
jia1208:
...
Could not publish server configuration for Tomcat v6.0 Server at localhost. -
u011274527:
赞
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误 -
旭旭小牛啦:
怎么没哟了,继续赛
jQuery 选择器 -
wzw3919:
100行会报空指针
Java 解压缩zip文件
自定义连接池稍微麻烦些,不过通过创建的ThreadPoolExecutor线程池对象,可以获取到当前线程池的尺寸、正在执行任务的线程数、工作队列等等.
下面创建一个执行任务类继承至Thread类,也可以实现Runnable接口,效果一样.
package pack.java.custom; /** * 执行任务; * @author zhouhaitao * 2012-4-11 */ public class RunnableTask extends Thread{ //线程数; private int i = 0; public RunnableTask(){ super(); } public RunnableTask(int num){ i = num ; } @Override public void run() { // TODO Auto-generated method stub for(int i =0;i<3;i++){ System.out.println(i); } System.out.println("线程"+i+"执行完成."); } }
创建一个测试自定义线程池的类,具体代码如下:
package pack.java.custom; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; /** * 自定义线程池; * @author zhouhaitao * 2012-4-11 */ public class CustomThreadPool { /** * @param args */ public static void main(String[] args) { //创建等待队列; BlockingQueue<Runnable> blockingQueue = new ArrayBlockingQueue<Runnable>(20); //创建一个单线程执行程序,它可以安排在指定的时间执行或者定期执行; ThreadPoolExecutor pool = new ThreadPoolExecutor(3, 5, 2, TimeUnit.MILLISECONDS, blockingQueue); Thread thread1 = new RunnableTask(1); Thread thread2 = new RunnableTask(2); Thread thread3 = new RunnableTask(3); pool.execute(thread1); pool.execute(thread2); pool.execute(thread3); //关闭线程池; pool.shutdown(); } }
执行结果:
----------------------------------------------------------------------------------------------------------------------------
0
1
2
线程1执行完成.
0
1
2
线程3执行完成.
0
1
2
线程2执行完成.
ThreadPoolExecutor构造方法参数介绍:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue)
用给定的初始参数和默认的线程工厂及处理程序创建新的 ThreadPoolExecutor。
使用 Executors 工厂方法之一比使用此通用构造方法方便得多。
参数:
corePoolSize - 池中所保存的线程数,包括空闲线程。
maximumPoolSize - 池中允许的最大线程数。
keepAliveTime - 当线程数大于核心时,此为终止前多余的空闲线程等待新任务的最长时间。
unit - keepAliveTime 参数的时间单位。
workQueue - 执行前用于保持任务的队列。此队列仅保持由 execute 方法提交的 Runnable 任务。
抛出:
IllegalArgumentException - 如果 corePoolSize 或 keepAliveTime 小于零,
或者 maximumPoolSize 小于或等于零,或者 corePoolSize 大于 maximumPoolSize。
NullPointerException - 如果 workQueue 为 null
引用:
http://longzhun.iteye.com/blog/1404836
发表评论
-
解决Java服务器端插入数据到Mysql中乱码问题--简单几步轻松解决乱码问题
2015-11-13 17:52 2414当写入数据到mysql数据库中发生乱码时.请检查以下几个地 ... -
设计模式之-代理模式-Proxy
2015-04-28 21:24 868使用代理模式之前需要知道代理模式能做什么? 能有哪些好处以及 ... -
构建高并发、服务化、低耦合企业级脚骨:springmvc+mybatis+restfull+webservice+bootstrap html5
2015-04-14 01:17 85SpringMVC + Mybatis + SpringS ... -
教您搭建大型互联网企业架构:springmvc+mybatis+restful+webservice+quartz+bootstrap
2015-04-13 21:54 99SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restful+webservice+quartz+bootstrap html5
2015-04-13 21:49 81SpringMVC + Mybatis + SpringSe ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:36 22SpringMVC + Mybatis + SpringS ... -
大型互联网服务集成平台:springmvc+mybatis+restfull+JMS+webservice+bootstrap
2015-04-12 23:33 83SpringMVC + Mybatis + SpringS ... -
Maven构建大型互联网架构springmvc+mybatis+Restfull+Webservice+Bootstrap
2015-04-12 23:28 71SpringMVC + Mybatis + SpringS ... -
maven构建高大上开源架构:springmvc+mybatis+rest+bootstrap html5
2015-04-12 23:25 23SpringMVC + Mybatis + SpringS ... -
手机App后台架构:Springmvc+SpringSecurity+mybatis+Rest+Quartz+Bootstrap Html5( Maven构建)
2015-04-09 01:39 76APP后台架构Maven构建,模拟大型互联网架构,支持高并发 ... -
maven构建springmvc+mybatis+rest+webservice+bootstrap html5(cms开源项目)
2015-04-09 01:21 85SpringMVC + Mybatis + SpringS ... -
Java正则表达式
2014-11-26 21:03 1219Java正则表达式: package pack.ja ... -
Cannot convert value of type [org.springframework.cache.ehcache.EhCacheCache
2014-11-10 20:03 6247错误信息: [org.springframework.be ... -
Collections工具类中的frequency方法统计单词出现的次数
2013-11-05 21:30 2812最近发现了一个Collections中有一个很好用的方法: ... -
Java 压缩Excel文件生成.zip文件
2013-05-08 22:22 7950首先创建文件目录,然后生成Excel文件到创建的目录下, ... -
Java 解压缩zip文件
2013-05-08 13:14 8351不借助于其他的第三方 ... -
Jxl操作Excel设置背景、字体颜色、对齐方式、列的宽度
2013-04-06 22:26 57701最近项目中需要用到导出Excel文件,以下是我写了一个通过j ... -
java获取字节的长度.
2012-05-17 22:00 6744我们经常要获取中文,数字,或者英文字符所占字节的长度,下面就列 ... -
StringBuffer-reverse()字符反转功能
2012-05-17 21:42 7092在书上看到一个这样的例子, 采用最简便的方式把一串字符串反转过 ... -
java 打开IE
2012-05-23 22:14 1298Runtime.getRuntime().exec(" ...
相关推荐
【自定义Java线程池实现】 在Java编程中,线程池是一种高效管理线程资源的方式,可以提高系统的性能和响应速度。本篇将探讨如何模拟Java的JDK线程池执行流程,以理解其设计原理。核心知识点包括线程池的执行策略、...
Spring Boot利用@Async实现异步调用:自定义线程池 Spring Boot是一个流行的Java框架,它提供了许多实用的特性来简化应用程序的开发。其中,异步调用是Spring Boot中的一个重要特性,它允许开发者将一些耗时的任务...
#### 三、自定义线程池设计 基于`Executor`接口,我们可以实现一个简单的线程池。首先,定义必要的属性: - `wc`: 当前线程数量。 - `coreThreadPool`: 核心线程数。 - `maxThreadPool`: 最大线程数。 - `...
自定义线程池需要实现`java.util.concurrent.Executor`接口,该接口定义了一个`execute`方法用于执行Runnable任务。我们可以扩展`java.util.concurrent.ThreadPoolExecutor`类,它提供了更复杂的线程池管理功能,...
Java中的ExecutorService和ThreadPoolExecutor可以创建线程池,通过合理调度任务,避免过多线程导致资源浪费和系统不稳定。使用线程池可以控制并发数量,优化内存管理,提高性能。 3. **日志(Log)**: 日志是...
本篇文章主要介绍了Java多线程学习笔记之自定义线程池,通过深入了解ThreadPoolExecutor这个核心类,我们可以自定义线程池,满足不同的线程池需求。 Java多线程学习笔记之自定义线程池的重要性在于,它可以根据不同...
JAVA 自定义线程池的最大线程数设置方法 JAVA 自定义线程池的最大线程数设置方法是指在创建线程池时,设置线程池的最大线程数,以确保线程池的高效运行。线程池的最大线程数设置方法主要取决于任务的类型,即CPU...
Android编程自定义线程池与用法示例 Android编程自定义线程池与用法示例主要介绍了Android编程自定义线程池与用法,结合实例形式分析了Android线程池的功能、定义及简单使用方法。下面将详细说明标题和描述中所说的...
通过深入研究和使用本资源提供的"JAVA经典线程池源码",开发者不仅可以理解线程池的基本工作原理,还能学习到如何自定义线程池以适应特定场景,从而提高程序的并发性能和稳定性。在实际项目中,结合Java并发API的...
`ThreadPoolExecutor`允许自定义线程池的核心参数,如核心线程数、最大线程数、线程存活时间、任务队列类型等。 - **固定线程池**:`Executors.newFixedThreadPool(int nThreads)`,创建一个固定大小的线程池,线程...
然而,如果我们想要从头开始理解线程池的工作原理,或者在特定场景下自定义线程池的行为,那么使用`Vector`来实现简单的线程池是一个很好的学习实践。 标题"使用Vector实现简单线程池"指的是将Java中的`Vector`类...
一、自定义线程池配置类 在 Spring Boot 中,我们可以使用 `@ConfigurationProperties` 注解来定义自定义的配置类。例如,我们可以创建一个 `TaskThreadPoolConfig` 类,如下所示: ```java package ...
这个自定义线程池的实现包括以下几个关键组件: 1. **线程池参数**: - `reserve`:保留线程数,这些线程不处理任务,但保持就绪状态,以防突然的任务激增。 - `minPools`:最小连接池数目,也是预启动的线程数。...
ThreadPoolExecutor允许我们自定义线程池的核心参数,如核心线程数、最大线程数、线程空闲时间以及工作队列等。这些参数的选择直接影响线程池的工作效率和稳定性。 在Android中,由于其运行环境的特殊性,主线程...
"ScalableCustomThreadPool-master"可能包含了一个自定义线程池的实现,该实现可能包括了以上所述的可伸缩性和自定义特性。源代码分析可以帮助理解如何在实际项目中创建和管理这样的线程池,以优化并发性能。 总的...
在实际应用中,根据业务需求,我们可以自定义线程池配置,如设置合适的线程数量和队列大小,以优化系统的资源利用率和性能。同时,消息队列的使用可以改善系统的吞吐量和可靠性,提高系统的整体效率。 关于“工具”...
在Java中,`java.util.concurrent`包提供了`ExecutorService`接口和`ThreadPoolExecutor`类,它们为实现线程池提供了标准的API。`ThreadPoolExecutor`允许我们自定义核心线程数、最大线程数、任务队列以及线程存活...
最常见的实现是`ThreadPoolExecutor`,它允许我们自定义线程池的核心参数,如核心线程数、最大线程数、线程存活时间等。使用线程池查询大批量数据的基本步骤如下: 1. **创建线程池**:首先,我们需要创建一个...