上一篇文章我们总结了多线程最基础的知识点Thread,我们知道了如何开启一个新的异步线程去做一些事情。可是当我们要开启很多线程的时候,如果仍然使用Thread我们需要去管理每一个线程的启动,挂起和终止,显然是很麻烦的一件事情。还好.net framework为我们提供了线程池ThreadPool来帮助我们来管理这些线程,这样我们就不再需要手动地去终止这些线程。这一篇文章就让我们来学习一下线程池ThreadPool吧。关于它我想从以下几个方面进行总结。

  1. 认识线程池ThreadPool
  2. ThreadPool的用法

认识线程池ThreadPool

ThreadPool类是一个静态类,你不能也不必要生成它的对象。而且一旦使用该方法在线程池中添加了一个项目,那么该项目是无法取消的。这里你无需自己建立线程,我们只需要把要做的工作写成函数,然后作为参数传递给ThreadPool.QueueUserWorkItem()方法就行了,传递的方法是依靠WaitCallBack代理对象,而线程的建立,管理和运行等工作都是由系统自动完成的,你无须考虑那些复杂的细节问题了。

ThreadPool的用法

我现在在之前的例子的基础上,使用线程池ThreadPool来实现。代码如下。

namespace ThreadDemo
{
class Program
{
static void Main(string[] args)
{
// 使用ThreadPool实现
Fish fish1 = new Fish { Name = "小黄鱼" };
Fish fish2 = new Fish { Name = "大鲨鱼" };
Fish fish3 = new Fish { Name = "灯笼鱼" };
Fish fish4 = new Fish { Name = "红鲤鱼" };
Fish fish5 = new Fish { Name = "灯笼鱼" };
ThreadPool.QueueUserWorkItem(f => { fish1.Move(); }); //lambda表达式
ThreadPool.QueueUserWorkItem(f => { fish2.Move(); });
ThreadPool.QueueUserWorkItem(f => { fish3.Move(); });
ThreadPool.QueueUserWorkItem(f => { fish4.Move(); });
ThreadPool.QueueUserWorkItem(f => { fish5.Move(); }); Console.ReadKey();
}
} /// <summary>
/// 鱼
/// </summary>
public class Fish
{
public string Name { get; set; } public int Score { get; set; } public Fish()
{
} public void Move()
{
Console.WriteLine(string.Format("{0}在游来游去...", Name));
}
}
}

程序运行结果如下。

aaarticlea/png;base64,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" alt="" />

下一篇文章我将要总结.net 4.0中新增的特性Task任务,欢迎大家继续关注。

多线程系列(2)线程池ThreadPool的更多相关文章

  1. Java多线程系列--“JUC线程池”06之 Callable和Future

    概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...

  2. Java多线程系列--“JUC线程池”02之 线程池原理(一)

    概要 在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构.线程池的实现类是ThreadPoolExecutor类.本章,我们通过分析Th ...

  3. Java多线程系列--“JUC线程池”03之 线程池原理(二)

    概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明.内容包括:线程池示例参考代 ...

  4. Java多线程系列--“JUC线程池”04之 线程池原理(三)

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期.在"Java多线程系列--“基础篇”01之 基 ...

  5. Java多线程系列--“JUC线程池”05之 线程池原理(四)

    概要 本章介绍线程池的拒绝策略.内容包括:拒绝策略介绍拒绝策略对比和示例 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3512947.html 拒绝策略 ...

  6. C#多线程学习 之 线程池[ThreadPool](转)

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  7. C#多线程学习 之 线程池[ThreadPool]

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  8. [转]C#多线程学习 之 线程池[ThreadPool]

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  9. python中多进程multiprocessing、多线程threading、线程池threadpool

    浅显点理解:进程就是一个程序,里面的线程就是用来干活的,,,进程大,线程小 一.多线程threading 简单的单线程和多线程运行:一个参数时,后面要加逗号 步骤:for循环,相当于多个线程——t=t ...

随机推荐

  1. DevOps - CI - Sonar

    Sonar 官方信息 https://www.sonarqube.org/ https://www.sonarqube.org/downloads/ https://docs.sonarqube.or ...

  2. Oracle日期格式化以及extract函数的使用

    由于业务需要,这两天在学习Oracle,发现Oracle里面的日期它会给你转成一种很不习惯的格式,于是想着怎么样把它弄成年.月.日的格式来显示,查资料.看文档,最终找到解决办法了,其实是用到了to_c ...

  3. Linux玩转redis从入门到放肆--1.缓存击穿

    1. 缓存穿透在大多数互联网应用中,缓存的使用方式如下图所示: 1.当业务系统发起某一个查询请求时,首先判断缓存中是否有该数据:2.如果缓存中存在,则直接返回数据:3.如果缓存中不存在,则再查询数据库 ...

  4. docker 下安装mssql-server-linux

    docker search mssql 查找mssql镜像 docker pull microsoft/mssql-server-linux 拉去mssql镜像 docker images 查看镜像 ...

  5. 10-03 Java 包的概述和讲解

    带包的编译和运行 A:手动式 a:编写一个带包的java文件. b:通过javac命令编译该java文件. c:手动创建包名. d:把b步骤的class文件放到c步骤的最底层包 e:回到和包根目录在同 ...

  6. [Umbraco] Data Type的扩展编程

    继续从上面的Data Types的自定义控件说起.前面用到了自定义控件的数据绑定,虽然这使得我们可以调用外部数据了,但这似乎还比较死板,如果再调用其他数据,还得再创建一个控件,那样的话就会出现类似的功 ...

  7. How To Scan QRCode For UWP (4)

    QR Code的全称是Quick Response Code,中文翻译为快速响应矩阵图码,有关它的简介可以查看维基百科. 我准备使用ZXing.Net来实现扫描二维码的功能,ZXing.Net在Cod ...

  8. Linux 服务器部署 PgAdmin 4 Server

    PostgreSQL 使用率越来越高,但是好用的图形化软件,诸如 Navicat.DataGrip.HeidiSQL 都是客户端软件,对于访问控制来说,比起 MySQL 的 phpMyAdmin 更加 ...

  9. android初探

    随着nodejs的不断发展,前端的范围越来越大,所以,适当的了解移动端是非常有必要的,比如使用RN开发app,前端必须要和安卓工程师沟通共同开发,那么学习android的基本知识就很重要了,因为目前安 ...

  10. .Net 鉴权授权

    在这里总结一下工作中遇到的鉴权和授权的方法 ① 固定token的方案 通过在nginx或者代码中写死token,或者通过在限制外网访问的方式已来达到安全授权的方式 ② session方案 分布式会话方 ...