WaitCallback 表示要在 ThreadPool 线程上执行的回调方法。 创建委托,方法是将回调方法传递给 WaitCallback 构造函数。 您的方法必须具有此处所显示的签名。


如果想使用线程池中的工作线程排队执行一个方法,可以使用ThreadPool.QueueUserWorkItem()方法。这个方法被重载的方法可以让你传递一个可选的object类型的自定义状态数据给waitCallBack委托实例

 public class Program
{
//出现的问题:dish类与其他两类的对应关系
//多线程针对的是什么,共享那块怎么处理
static void Main(string[] args)
{
Console.WriteLine("-----------------------------");
// Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
WaitCallback callback = new WaitCallback(new printer().Print);
for (int i = ; i < ; i++)
{
ThreadPool.QueueUserWorkItem(callback,i);
}
Console.ReadLine();
} }
public class printer
{
public void Print(object obj)
{
lock (this)
{
if (Convert.ToInt32(obj) < )
{
Console.WriteLine(obj.ToString()+" 在等待");
Monitor.Wait(this);
Console.WriteLine(obj.ToString());
}
else
{
Monitor.PulseAll(this);
Console.WriteLine(obj.ToString());
}
} }
}

线程池的好处:

  1. 减少了线程创建、开始和停止的次数,提高了效率。
  2. 能够使我们将注意力放到业务逻辑上而不是多线程架构上。

然而,在某些特殊情况应优先使用手工线程管理。比如:

  1. 如果需要前台线程或设置优先级别,或者线程池中的线程总是后台线程,且它的优先级是默认的
  2. 如果需要有一个带有固定标志的线程便于退出、挂起或通过名字发现它

CLR线程池的更多相关文章

  1. 浅谈线程池(上):线程池的作用及CLR线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-1-the-goal-and-the-clr-thread-pool.html 线程池是一个重要的概念. ...

  2. 线程机制、CLR线程池以及应用程序域

    最近在总结多线程.CLR线程池以及TPL编程实践,重读一遍CLR via C#,比刚上班的时候收获还是很大的.还得要多读书,读好书,同时要多总结,多实践,把技术研究透,使用好. 话不多说,直接上博文吧 ...

  3. C# 多线程学习系列三之CLR线程池系列之ThreadPool

    一.CLR线程池 1.进程和CLR的关系一个进程可以只包含一个CLR,也可以包含多个CLR2.CLR和AppDomain的关系一个CLR可以包含多个AppDomain3.CLR和线程池的关系一个CLR ...

  4. 如何应用CLR线程池来管理多线程

        class Program     {         static void Main(string[] args)         {             int intWorkerT ...

  5. MVC的HTTP请求处理过程(IIS应用程序池、CLR线程池)

    主要内容 本文讲解的是:服务器接受Http Request请求之后,是如何进入.Net CLR,从而进一步操作的. 我们大家都知道,IIS必须先接受请求,然后才能有机会进入CLR,但对请求(reque ...

  6. CLR线程概览(下)

    作者:施懿民链接:https://zhuanlan.zhihu.com/p/20866017来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 同步: 托管代码 托管代码可 ...

  7. 线程池ThreadPool的初探

    一.线程池的适用范围 在日常使用多线程开发的时候,一般都构造一个Thread示例,然后调用Start使之执行.如果一个线程它大部分时间花费在等待某个事件响应的发生然后才予以响应:或者如果在一定期间内重 ...

  8. 浅谈线程池(中):独立线程池的作用及IO线程池

    原文地址:http://blog.zhaojie.me/2009/07/thread-pool-2-dedicate-pool-and-io-pool.html 在上一篇文章中,我们简单讨论了线程池的 ...

  9. 线程池(C#)

    转自:http://blog.sina.com.cn/s/blog_494305f30100ryw7.html 在这里你可以学到Microsoft研究CLR实现线程池的原理机制,从而更灵活的处理CLR ...

随机推荐

  1. 【Fiddler】改写返回数据功能

    方法一:打断点 1.在手机上设置好代理后,随便进入一个APP:之后选择Rules->Automatic Breakpoints->After Responses,在返回值处打断点 2.重新 ...

  2. 引用类型(object、array)

    1.Object类型 1)创建方法: //使用new加object构造函数 var person = new Object(); person.name = "aaa"; pers ...

  3. SharePoint Foundation 2013 安装出错

    前段时间装foundation 13的时候遇到这个问题.怀疑是Office的问题.然后找了一些资料,问题得到了解决 解决方案: 运行 regedit,删除注册表下的office的LicenseType ...

  4. rem

    "em"是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险.而rem是相对于根元 ...

  5. 用于阻止div上的事件和div上的按钮的事件同时触发

    event.stopPropagation()  阻止事件冒泡  用于ie11以上

  6. ionic 通过PouchDB + SQLite来实现app的本地存储(Local Storage)

    首先声明,本教程参考国外网站(http://gonehybrid.com/how-to-use-pouchdb-sqlite-for-local-storage-in-your-ionic-app/) ...

  7. ubuntu 下非交互式执行远程shell命令

    apt-get install sshpass sshpass -p **your_password** ssh -o StrictHostKeyChecking=no "root@$ip& ...

  8. 数据类型、常量、变量、printf、scanf和运算符

    数据类型 常量 变量 printf函数介绍 scanf函数介绍 运算符 数据类型 数据类型是指数据在内存中存储的方式. C语言中有5大数据类型:基本类型.构造类型.指针类型.空类型.定义类型. C语言 ...

  9. ASP.net Core部署说明(Ubuntu) [转]

    最近在学习asp.net core,当然学习的目的是想了解一下,Asp.net core是否真的能够是先跨平台部署. 根据目前官网资料说明,asp.net core只有在Redhat 企业版上,才能够 ...

  10. Adb refused a command 解决方法

    原文:How To Fix Android Error Adb Refused A Command 地址:http://downloadfixit.com/android-error-adb-refu ...