`
sw1982
  • 浏览: 511298 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

线程池的用法

阅读更多

一。线程池的实例化

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 mcpage 线程池用法实例.rar

    在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异步线程池用法总结 本文主要介绍了Spring @Async异步线程池的用法总结,包括异步线程池的接口类、@Async定义异步任务、Spring开启异步配置等内容。 1. 异步线程池的接口类 Spring提供了多种...

    Java线程池用法实战案例分析

    Java线程池用法实战案例分析 Java线程池是Java并发编程中的一种重要机制,用于管理和执行多个线程,以提高程序的并发性和性能。在本文中,我们将通过实战案例来剖析Java线程池的用法,包括线程池的创建、使用和终止...

    java线程池使用后到底要关闭吗

    关闭线程池可以使用shutdown()或shutdownNow()方法。shutdown()方法将等待所有任务执行完毕后销毁线程,而shutdownNow()方法将立即结束所有线程,不管是否正在运行,并返回未执行完毕的任务列表。 使用java线程池时...

    Qt线程池+多线程使用

    本篇文章将详细探讨Qt线程池的使用以及如何实现多线程间的通信。 首先,让我们了解什么是Qt线程池。Qt中的线程池由`QThreadPool`类实现,它可以管理一组线程,并根据需要分配任务。当一个任务被提交到线程池时,...

    C# 线程池使用示例

    在VS2013环境下,结合控制台窗口,我们可以轻松地实现线程池的使用。下面将详细探讨C#线程池的工作原理、优势以及如何在实际项目中应用。 线程池的基本概念: 线程池是一组预先创建的线程,这些线程由操作系统维护...

    c#线程池使用demo

    在本示例"C#线程池使用demo"中,我们将探讨如何利用线程池来执行任务,以及其背后的原理和最佳实践。 首先,线程池主要由System.Threading命名空间下的ThreadPool类提供。在C#中,我们可以通过以下方式向线程池提交...

    java 线程池常用方法

    当不再需要线程池时,应通过`ExecutorService`的`shutdown()`方法优雅地关闭线程池。这个方法不会立即终止所有线程,而是不再接受新任务,待当前任务完成后,线程池才会关闭。如果希望立即停止所有任务,可以使用`...

    C++线程池实现 vc2015编译

    在C++编程中,线程池是一种管理线程的有效机制,它可以提高程序的并发性能,减少线程创建和销毁的开销。线程池的概念基于池化资源的思想,即预先创建一组线程,当需要执行任务时,从池中获取空闲线程,而不是每次都...

    Java线程池使用说明

    1. Executor:它是Java中线程池的顶级接口,定义了执行线程的抽象方法,但它本身并不直接提供线程池功能。 2. ExecutorService:是真正的线程池接口,提供了一系列方法来管理线程的生命周期以及任务的执行。 3. ...

    Python 线程池用法简单示例

    本文实例讲述了Python 线程池用法。分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #! python3 ''' Created on 2019-10-2 @author: Administrator ''' from concurrent.futures import ...

    如何使用线程池

    以下示例显示如何使用线程池。首先创建 ManualResetEvent 对象,此对象使程序能够知道线程池何时运行完所有的工作项。接着,尝试向线程池添加一个线程。如果添加成功,则添加其余的线程(本例中为 4 个)。然后...

    C#线程池用法详细介绍

    此外,还可以使用其他方法,如 `ThreadPool.UnsafeQueueUserWorkItem` 或 `ThreadPool.BindHandle` 来实现特定的线程池功能。对于更复杂的并发控制,可以使用 `Task` 类和 `Task Parallel Library (TPL)`,这是 .NET...

    四种Java线程池用法解析

    例如,可以使用`scheduleAtFixedRate`或`scheduleWithFixedDelay`方法来实现定时任务。 4. `newSingleThreadExecutor`: 创建一个单线程的线程池,所有的任务都会按照提交的顺序在一个单独的工作线程中依次执行。...

    线程池  

    `ThreadPool`类的构造函数可以初始化线程池,`addTask`方法用于添加任务,`run`方法调度并执行任务,而`shutdown`方法则用于关闭线程池并清理资源。 线程池的使用场景广泛,如在网络I/O、数据库操作、定时任务、...

    线程池使用Demo

    线程池的关闭也很重要,使用`shutdown()`方法会停止接收新任务但会执行已提交的任务,而`shutdownNow()`则会尝试停止所有正在执行的任务。 在实际应用中,选择合适的线程池配置和优化是性能调优的关键。需要考虑的...

    线程池管理多线程上传

    - **提交任务**:使用`ExecutorService`的`execute()`方法提交`Runnable`或`Callable`任务。 - **线程调度**:线程池会根据预设策略决定何时运行新任务,可能立即执行或等待其他任务完成。 - **关闭线程池**:...

Global site tag (gtag.js) - Google Analytics