大多数Executor的实现使用线程池,是由工作线程组成。这种线程与它执行的Runnable和回调函数分开,即单独存在,通常用来执行多任务。
使用工作线程由于线程创建减少了开销。线程对象使用大量的内存,并且在大规模应用程序中,分配和取消分配许多线程对象产生了显著的内存管理开销。
一个普通类型的线程池是大小固定的线程池。这类池有一个指定数量的线程运行。如果一个线程在它仍旧使用的时候不知怎么终止了,一个新的线程将自动替代它。任务通过一个内部队列提交给池,每当活动任务比线程多的时候,池将持有额外的任务。
固定大小线程池的重要优点是应用程序使用它完美降低(degrade gracefully)。为了理解这个,考虑一个web 服务器应用,此应用中每个HTTP请求被一个单独的线程处理。如果这个应用程序为每个新的HTTP请求创建了一个新的线程,系统就将立即接受更多的请求比它处理的,应用程序将立即停止对所有请求的响应,当所有那些线程的开支超过了系统的容量的时候。对能被创建的线程的数量设置一个限制,虽然应用将不会跟它们一样快的服务这些HTTP请求,但是它将尽快的以系统能够承受的服务HTTP请求。
创建一个执行器的简单方式是用一个固定大小的线程池,调用java.util.concurrent.Executors 的newFixedThreadPool 工厂方法。这个类也提供了如下的工厂方法:
1 newCachedThreadPool方法创建了一个可扩展的线程池。这个线程池适用于启动许多短暂任务的应用。
2 newSingleThreadExecutor方法创建了一个线程池,一次执行一个单一任务。
3 几个工厂方法是上面执行器的ScheduledExecutorService版本。
如果通过上述工厂方法提供不了满足你的需求的执行器,构造java.util.concurrent.ThreadPoolExecutor 或者 java.util.concurrent.ScheduledThreadPoolExecutor 的实例将给你额外的选择。
分享到:
相关推荐
VC++ 6.0下实现的线程池程序。 用户可以在WorkItem下设置要完成的任务,设置好工作函数,即可运行线程池开始多线程工作。
ThreadPools
ThreadPoolWithCameraPreview, 在Android上,使用threadpools提高性能的演示 带相机预览的ThreadPool下载演示应用在 Google Play 上。项目演示了如何使用 HandlerThread s 和 ThreadPool s 在后台线程的android API...
SP6ex1ThreadPools
Java 线程池应用程序这个应用程序是作为我本科课程工作的一部分开发的,该课程称为基于性能的编程模块。 该模块主要关注 Java 中多线程应用程序的安全开发。 该作业专门研究了线程池和同步的概念。 该应用程序为用户...
ThreadPools.jl是一个简单的程序包,它公开了一些模仿Base.Threads.@threads , Base.map和Base.foreach宏和函数。这些宏(和基础API)处理内置函数并非总是很适合的情况: 用户希望远离主线程的一组任务 一组持续...
可扩展服务器设计使用线程池 该项目的目的是使用线程池平衡服务器上的负载。 线程创建是一个昂贵的过程,涉及时间和资源,因此,与其为服务器收到的每条消息生成一个线程,不如使用一个线程池执行任务,这是理想的...
android.support.v4.util.Pools使用的Demo,详情见博客:http://blog.csdn.net/u012810020/article/details/52915922
自己写好的对象池,可以拿下来直接用,挺简单的哈,为什么要50个字的描述,能说清楚不久得了,希望改进XXXXXXXXXXXXXXXXXXXX
Memory Pools V1.2 Memory Pools V1.2
cpp_web c++服务器开发 实现一个简单的socket接口编程,服务端向客户端返回网页,使用套接口中常用的函数进行编程开发,提高自己对多线程编程...│ ├── threadpools.cc 线程池类 │ └── threadpools.h └── t
Power pools are formal groups of Utilities that exchange electricity in order to reduce production costs. The purpose of this paper is to present a framework which assesses the impacts of different ...
This class can preverify methods in program class pools, according to a given configuration.
使用线程池的分布式内容收获 包含内容检索和解析的Web内容收集通常是分析任务(例如搜索,广告放置和相关性排名)的先兆。 作为该项目的一部分,我开发了一种分布式内容收集器,该收集器使用线程池来检索和解析内容...
mem poolsmem poolsmem pools
uncached pages come the page pools, zero them before returning for security purposes (other allocations are zerod at alloc time.
这是dhcpd-pools ISC dhcp共享网络和池范围使用情况的分析。 该命令的目的是计算ISC dhcpd控制的每个IP范围和共享网络池的使用率。 该命令的用户最有可能是具有较大IP空间的ISP和其他组织。 程序用C编写。设计目标是...
Using thread pools 342 Customizing the thread pool dispatcher 354 Using remote threading 371 Appendix 381 Installing MySQL Connector/C 381 Installing WinDDK – Driver Development Kit 384 Setting up a ...
IBM DS8000存储中的Arrays,Ranks,Extent pools的概念
CameraPreview YUV byte[]在后台HandlerThread上捕获,然后使用ThreadPools执行上述操作以提高速度和性能。 TheadPool之前的性能 ThreadPool之后的性能 Google Play演示应用 在上下载演示应用程序。