大多数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_Thread_Pools.rar”提供了在VC++ 6.0环境下实现线程池的一个实例,帮助开发者理解和应用线程池技术。 线程池是一种管理线程的机制,它预先创建一组线程,当有新的任务需要执行时,线程池会从已创建的...
本文将深入探讨`Concurrent Ruby`中的核心概念和组件,包括Agents、Futures、Promises和Thread Pools,以及Supervisors,帮助你更好地理解和运用这些工具。 一、Agents 在`Concurrent Ruby`中,Agent是一种线程安全...
##### Threadpools 线程池配置对于优化 Wowza Streaming Engine 的并发处理能力至关重要。可以通过 Wowza Streaming Engine Manager 来调整线程池大小,以匹配实际硬件资源和负载需求。例如,在高并发访问的情况下...
线程池(ThreadPools)在C++编程中是一个重要的多线程管理工具,它能够有效地管理和调度线程资源,从而提高程序的执行效率和并发性能。本文将深入探讨线程池的概念、工作原理以及在C++中的实现。 线程池的概念: ...
-- The connectors can use a shared executor, you can define one or more named thread pools --> maxThreads="1000" minSpareThreads="50" maxIdleTime="600000"/> ``` - **name**:线程池的名字,必须唯一...
Java 线程池应用程序这个应用程序是作为我本科课程工作的一部分开发的,该课程称为基于性能的编程模块。 该模块主要关注 Java 中多线程应用程序的安全开发。 该作业专门研究了线程池和同步的概念。 该应用程序为用户...
ThreadPools.jl是一个简单的程序包,它公开了一些模仿Base.Threads.@threads , Base.map和Base.foreach宏和函数。这些宏(和基础API)处理内置函数并非总是很适合的情况: 用户希望远离主线程的一组任务 一组持续...
可扩展服务器设计使用线程池 该项目的目的是使用线程池平衡服务器上的负载。 线程创建是一个昂贵的过程,涉及时间和资源,因此,与其为服务器收到的每条消息生成一个线程,不如使用一个线程池执行任务,这是理想的...
在`<thread-pools>`下添加或修改相关属性,如最大线程数(`max-thread-count`)、最小线程数(`min-thread-count`)和线程等待队列长度(`work-manager`的`max-queue-length`)。例如: ```xml <thread-pools> ...
cpp_web c++服务器开发 实现一个简单的socket接口编程,服务端向客户端返回网页,使用套接口中常用的函数进行编程开发,提高自己对多线程编程...│ ├── threadpools.cc 线程池类 │ └── threadpools.h └── t
使用线程池的分布式内容收获 包含内容检索和解析的Web内容收集通常是分析任务(例如搜索,广告放置和相关性排名)的先兆。 作为该项目的一部分,我开发了一种分布式内容收集器,该收集器使用线程池来检索和解析内容...
- **Thread Pools**:线程池是一种管理线程资源的方法,它可以有效地复用线程,减少创建和销毁线程的开销,同时提供可调整的并发级别。 - **Thread Scheduling Policies**:了解不同的调度策略(如 FIFO, Round ...
如何在多线程中执行任务,使用线程池(Thread Pools)和执行器框架(Executor Framework)等高级工具。 7. **取消和关闭(Cancellation and Shutdown)** 处理任务的取消机制,以及在服务停止时的线程安全问题。...
该框架基于三个核心设计组件:任务(tasks)、队列(queues)和线程池(thread pools),这些组件共同封装了多线程和事件驱动编程的优势,并解决了它们在实际应用中的不足之处。 1. **任务(Tasks)** - 任务是构成应用...
CameraPreview YUV byte[]在后台HandlerThread上捕获,然后使用ThreadPools执行上述操作以提高速度和性能。 TheadPool之前的性能 ThreadPool之后的性能 Google Play演示应用 在上下载演示应用程序。
7. **线程池(Thread Pools)** 虽然C++标准库没有内置线程池,但可以自定义实现。线程池是一组预先创建的线程,可以复用以执行任务,避免频繁创建和销毁线程的开销。 8. **死锁(Deadlock)** 在多线程环境中,...
### 八、线程池(Thread Pools) 线程池是一种管理线程资源的有效机制。通过使用线程池,开发者可以避免频繁创建和销毁线程所带来的开销。本章介绍了.NET Framework中线程池的工作原理及其使用方法,同时讨论了如何...
原文作者可能还探讨了不同类型的线程池(thread pools)设计,它们是如何提高效率,减少线程创建和销毁的开销。 另一方面,《外文文献(翻译).doc》则提供了对原文的理解,帮助读者跨越语言障碍,深入理解并行和...
7. **线程池(Thread Pools)**: Java 1.5引入了`java.util.concurrent`包,其中包含线程池和并发工具类。线程池可以有效地管理多个线程,减少创建和销毁线程的开销,提高系统性能。`ExecutorService`是线程池的...
7. **线程池(Thread Pools)**: 虽然C++11标准库没有内置线程池,但可以通过`std::thread`和任务队列自定义实现。线程池可以提高性能,避免频繁创建和销毁线程的开销,同时可以有效地调度工作负载。 8. **异常...