在JDK1.5中,线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue,
RejectedExecutionHandler handler)
其中:
- corePoolSize: 线程池维护线程的最少数量。
- maximumPoolSize:线程池维护线程的最大数量。
- keepAliveTime: 线程池维护线程所允许的空闲时间。
- unit: 线程池维护线程所允许的空闲时间的单位。
- workQueue: 线程池所使用的缓冲队列。
- handler: 线程池对拒绝任务的处理策略
一个任务通过 execute(Runnable)方法被添加到线程池,任务就是一个 Runnable类型的对象,任务的执行方法就是 Runnable类型对象的run()方法。
当一个任务通过execute(Runnable)方法欲添加到线程池时:
- 如果此时线程池中的数量小于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建新的线程来处理被添加的任务。
- 如果此时线程池中的数量等于 corePoolSize,但是缓冲队列 workQueue未满,那么任务被放入缓冲队列。
- 如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量小于maximumPoolSize,建新的线程来处理被添加的任务。
- 如果此时线程池中的数量大于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。
也就是说,处理任务的优先级为:
核心线程corePoolSize、任务队列workQueue、最大线程maximumPoolSize,如果三者都满了,使用handler处理被拒绝的任务。
当线程池中的线程数量大于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被终止。这样,线程池可以动态的调整池中的线程数。
unit可选的参数为java.util.concurrent.TimeUnit中的几个静态属性:
NANOSECONDS、MICROSECONDS、MILLISECONDS、SECONDS。
workQueu常用的是:java.util.concurrent.ArrayBlockingQueue
handler有四个选择:
- ThreadPoolExecutor.AbortPolicy():抛出java.util.concurrent.RejectedExecutionException异常。
- ThreadPoolExecutor.CallerRunsPolicy():重试添加当前的任务,他会自动重复调用execute()方法。
- ThreadPoolExecutor.DiscardOldestPolicy():抛弃旧的任务。
- ThreadPoolExecutor.DiscardPolicy():抛弃当前的任务。
原文地址:http://www.roboticfan.com/blog/u2007/15223/archives/2008/2008730161917.shtml
分享到:
相关推荐
使用jdk1.5 实现的线程池. 可以定制人物和其它特性. 下载后可以自己进行相关功能完善. 欢迎加QQ:934547801一起讨论
JDK1.5的线程池讲解,示例代码,很精辟~
JDK 1.5引入了java.util.concurrent包,其中包含了线程池的实现,使得并发编程更加便捷和高效。线程池的核心在于它的设计策略,包括核心线程数、最大线程数、线程存活时间、工作队列以及拒绝策略。 线程池的主要类...
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介
对于并发编程,JDK1.5引入了java.util.concurrent包,其中包括了线程池、Future、Callable接口以及CyclicBarrier和Semaphore等同步工具类,极大地丰富了并发处理能力,提升了多线程环境下的性能和可维护性。...
10. **NIO.2(New IO 2.0)**:虽然不是JDK1.5的一部分,但在后续的Java版本中,NIO(非阻塞I/O)进行了大量增强,增加了文件通道、文件属性和异步I/O等功能。 11. **异常链(Exception Chaining)**:当一个异常在...
"JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用" JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用是Java多线程编程中的一种重要概念。随着多线程编程的普及,线程池的使用变得...
在并发处理上,JDK1.5引入了并发工具类(java.util.concurrent),包括线程池(ExecutorService)、并发容器(如ConcurrentHashMap)以及Future接口等,这些工具极大地提高了多线程环境下的程序设计效率和性能。...
安装程序"jdk1.5 for windows(32位)安装程序.exe"将引导用户完成配置步骤,包括选择安装目录、设置环境变量(如JAVA_HOME、PATH和CLASSPATH)以及选择是否创建桌面快捷方式。 请注意,由于JDK 1.5已经过时,可能...
**JDK1.5免安装详解** Java Development Kit(JDK)是Oracle公司提供的用于开发和运行Java应用程序的工具集合。JDK1.5,也称为Java 5.0,是一个重要的版本,它引入了许多创新特性,提升了Java编程的效率和性能。...
标题"jdk1.5 and tomcat5.5"指的是Java Development Kit (JDK) 1.5版本与Apache Tomcat 5.5版本的组合。这两个组件是开发和运行Java应用程序的关键工具,特别是对于Web应用程序。 描述中提到的"jdk-1_5_0_22-...
JDK 1.5的内存模型和并发工具也得到了增强,添加了如`java.util.concurrent`包,其中包含了线程池、同步容器、并发队列等高效并发编程工具,极大地提升了多线程环境下应用程序的性能和可维护性。 至于文件列表中的`...
在Java编程语言中,线程并发和线程池是多任务执行的核心概念,尤其是在JDK 1.5及以后的版本中得到了显著增强。线程并发允许程序同时执行多个任务,提高了程序的效率和响应性。线程池是管理线程资源的有效方式,通过...
以上就是JDK 1.5中的一些关键特性,这些改变对Java语言的发展产生了深远影响,使得Java成为更强大、更易用的开发平台。如果你正准备安装JDK 1.5,记得检查系统兼容性,遵循官方的安装指南进行操作。
**Java Development Kit (JDK)...总之,JDK 1.5.0.22 64位是一个重要的历史版本,它在Java发展历程中扮演了关键角色,引入了许多至今仍广泛使用的特性。然而,为了保持软件的最新特性和安全性,建议使用更新的JDK版本。
这些并发新特性使得在 JDK 1.5 中编写多线程程序变得更加简单和高效,减少了锁竞争,提高了并发性能,并降低了死锁和数据不一致的风险。通过熟练掌握这些工具,开发者可以更好地应对复杂的并发场景,构建健壮的并发...
《Java JDK1.5实例宝典》是一本深入解析JDK1.5版本中关键特性和类库的实践指南,涵盖了Java Mail、Servlet、JSP以及多线程等多个核心领域。这本书通过丰富的实例来帮助读者理解和掌握Java编程的精髓。 在JDK1.5中,...
在并发处理方面,JDK1.5引入了并发工具包(java.util.concurrent),包括线程池、并发容器和同步原语等,提供了高效且易于使用的多线程编程工具,大大改善了Java的并发性能。 最后,JDK1.5对垃圾回收机制进行了优化...
资源很不错