一。线程池的实例化
ExecutorService pool = Executors.newFixedThreadPool(10);
二。线程组的概念
就是将n个线程归到某一类总控开关下。 我这里使用的是list结构,当然JDK的ThreadGroup也是可行。
//http发送线程组
public static List<HttpSender> httpSendThreadGroup = new ArrayList<HttpSender>();
for(int i=0;i<10;i++) {
HttpSender httpSend = new HttpSender();
httpSend.setName("Thread:HttpSender-"+i);
httpSendThreadGroup.add(httpSend);
httpSend.start();
}
三。线程池
1.先演示一种用法: 大小为10的线程池,丢进去10个常驻线程
(也就是run方法里面做无限循环)
try {
httpSendExecutor = Executors.newFixedThreadPool(10);
for(int i=0;i<10;i++){
httpSendExecutor.execute(new HttpSender());
}
} catch (Exception e) {
logger.error("HttpSender start error!", e);
}
那么这种用法,线程池的特性其实得不到体现。跟上面描述的线程组,就是一个概念了。
2. JDK演示的一种用法,
* try {
* for (;;) {
* pool.execute(new Handler(serverSocket.accept()));
* }
* } catch (IOException ex) {
* pool.shutdown();
* }
这里Handle是非常驻线程
,即一个线程的run方法,只处理一次accept,然后线程退出。这里是无限向pool提交线程,由线程池来调度
那么问题就出来了: 是常驻线程无限循环去做job好,还是由线程池无限支持新线程做job然后销毁比较好呢??
暂时哥也没啥答案。。一切敬请期待把,想法子做个测试
分享到:
相关推荐
在Delphi编程环境中,线程池是一种非常重要的...通过深入学习和实践这个`Delphi mcpage 线程池用法实例`,开发者可以更好地理解和掌握线程池的原理和实际操作,从而在自己的项目中有效利用多线程技术,提升软件性能。
接下来,我们将详细探讨这四大线程池的特点、用法及适用场景。 1. **固定大小线程池(newFixedThreadPool)** - 创建方法:`Executors.newFixedThreadPool(int nThreads)` - 特点:线程池大小固定,当所有工作...
本篇文章将重点探讨两种线程池实现:精易模块线程池和鱼刺模块线程池,并通过源码分析来展示它们的特点和用法。 首先,精易模块(SanYe Module)是由中国程序员SanYe开发的一系列开源模块,其中包含了线程池的实现...
按先后顺序执行线程 public static void main(String[] args) { ExecutorService t = Executors.newSingleThreadExecutor(); for (int i = 0; i ; i++) { t.submit(new AA(i));... System.out.println(...
浅谈Spring @Async异步线程池用法总结 本文主要介绍了Spring @Async异步线程池的用法总结,包括异步线程池的接口类、@Async定义异步任务、Spring开启异步配置等内容。 1. 异步线程池的接口类 Spring提供了多种...
Java线程池用法实战案例分析 Java线程池是Java并发编程中的一种重要机制,用于管理和执行多个线程,以提高程序的并发性和性能。在本文中,我们将通过实战案例来剖析Java线程池的用法,包括线程池的创建、使用和终止...
关闭线程池可以使用shutdown()或shutdownNow()方法。shutdown()方法将等待所有任务执行完毕后销毁线程,而shutdownNow()方法将立即结束所有线程,不管是否正在运行,并返回未执行完毕的任务列表。 使用java线程池时...
本篇文章将详细探讨Qt线程池的使用以及如何实现多线程间的通信。 首先,让我们了解什么是Qt线程池。Qt中的线程池由`QThreadPool`类实现,它可以管理一组线程,并根据需要分配任务。当一个任务被提交到线程池时,...
在VS2013环境下,结合控制台窗口,我们可以轻松地实现线程池的使用。下面将详细探讨C#线程池的工作原理、优势以及如何在实际项目中应用。 线程池的基本概念: 线程池是一组预先创建的线程,这些线程由操作系统维护...
在本示例"C#线程池使用demo"中,我们将探讨如何利用线程池来执行任务,以及其背后的原理和最佳实践。 首先,线程池主要由System.Threading命名空间下的ThreadPool类提供。在C#中,我们可以通过以下方式向线程池提交...
当不再需要线程池时,应通过`ExecutorService`的`shutdown()`方法优雅地关闭线程池。这个方法不会立即终止所有线程,而是不再接受新任务,待当前任务完成后,线程池才会关闭。如果希望立即停止所有任务,可以使用`...
在C++编程中,线程池是一种管理线程的有效机制,它可以提高程序的并发性能,减少线程创建和销毁的开销。线程池的概念基于池化资源的思想,即预先创建一组线程,当需要执行任务时,从池中获取空闲线程,而不是每次都...
1. Executor:它是Java中线程池的顶级接口,定义了执行线程的抽象方法,但它本身并不直接提供线程池功能。 2. ExecutorService:是真正的线程池接口,提供了一系列方法来管理线程的生命周期以及任务的执行。 3. ...
本文实例讲述了Python 线程池用法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019-10-2 @author: Administrator ''' from concurrent.futures import ...
以下示例显示如何使用线程池。首先创建 ManualResetEvent 对象,此对象使程序能够知道线程池何时运行完所有的工作项。接着,尝试向线程池添加一个线程。如果添加成功,则添加其余的线程(本例中为 4 个)。然后...
此外,还可以使用其他方法,如 `ThreadPool.UnsafeQueueUserWorkItem` 或 `ThreadPool.BindHandle` 来实现特定的线程池功能。对于更复杂的并发控制,可以使用 `Task` 类和 `Task Parallel Library (TPL)`,这是 .NET...
例如,可以使用`scheduleAtFixedRate`或`scheduleWithFixedDelay`方法来实现定时任务。 4. `newSingleThreadExecutor`: 创建一个单线程的线程池,所有的任务都会按照提交的顺序在一个单独的工作线程中依次执行。...
`ThreadPool`类的构造函数可以初始化线程池,`addTask`方法用于添加任务,`run`方法调度并执行任务,而`shutdown`方法则用于关闭线程池并清理资源。 线程池的使用场景广泛,如在网络I/O、数据库操作、定时任务、...
线程池的关闭也很重要,使用`shutdown()`方法会停止接收新任务但会执行已提交的任务,而`shutdownNow()`则会尝试停止所有正在执行的任务。 在实际应用中,选择合适的线程池配置和优化是性能调优的关键。需要考虑的...
- **提交任务**:使用`ExecutorService`的`execute()`方法提交`Runnable`或`Callable`任务。 - **线程调度**:线程池会根据预设策略决定何时运行新任务,可能立即执行或等待其他任务完成。 - **关闭线程池**:...