ThreadPool类(线程池)】的更多相关文章

原文:ThreadPool类(线程池) CLR线程池并不会在CLR初始化时立即建立线程,而是在应用程序要创建线程来运行任务时,线程池才初始化一个线程.线程池初始化时是没有线程的,线程池里的线程的初始化与其他线程一样,但是在完成任务以后,该线程不会自行销毁,而是以挂起的状态返回到线程池.直到应用程序再次向线程池发出请求时,线程池里挂起的线程就会再度激活执行任务.这样既节省了建立线程所造成的性能损耗,也可以让多个任务反复重用同一线程,从而在应用程序生存期内节约大量开销. 通过CLR线程池所建立的线程…
CLR线程池并不会在CLR初始化时立即建立线程,而是在应用程序要创建线程来运行任务时,线程池才初始化一个线程.线程池初始化时是没有线程的,线程池里的线程的初始化与其他线程一样,但是在完成任务以后,该线程不会自行销毁,而是以挂起的状态返回到线程池.直到应用程序再次向线程池发出请求时,线程池里挂起的线程就会再度激活执行任务.这样既节省了建立线程所造成的性能损耗,也可以让多个任务反复重用同一线程,从而在应用程序生存期内节约大量开销. 通过CLR线程池所建立的线程总是默认为后台线程,优先级数为Threa…
 在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一是通过AsyncTask来实现,另一种方式则是通过ThreadPool来实现,今天我们就通过一个例子来讲解和对比这两种实现方式.     项目的结构如下所示:     在今天这个例子里,我们用到了之前一篇文章中写过的一个自定义控件,如果有同学感兴趣的话可以点击这里来先研究下这个控件的实现,为了配合异…
Thread(线程) Thread开启线程:接收一个参数 TestClass tc = new TestClass(); //没有返回值,有一个object类型的参数的委托:两种写法. ParameterizedThreadStart threadStart1 = t => tc.TestThread(t.ToString()); //ParameterizedThreadStart threadStart2 = new ParameterizedThreadStart(tc.TestThrea…
本文来自:http://rickie.cnblogs.com/archive/2004/11/23/67275.html 在多线程的程序中,经常会出现两种情况.一种情况下,应用程序中的线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应:而另外一种情况则是线程平常都处于休眠状态,只是周期性地被唤醒.这里分析及介绍.Net Framework中ThreadPool class来对付第一种情况,相应地也会谈到QueueUserWorkItem方法和WaitCallback委托.而使用…
http://www.2ccc.com/btdown.asp?articleid=5953 ftp://download:S3cirpYW3DoR@www.2ccc.com/vcl/system/20120301114502_ThreadPool.rar Delphi线程池控件说明:模仿.Net的ThreadPool类的功能.控件关键属性:  MaxThreadCount,MinThreadCount设置池中最大最小线程数量,默认为0,线程即用即释放.  ThreadWorkFinished在线…
刚刚研究了一下线程池,如果有不足之处,请大家不吝赐教,大家共同学习.共同交流. 在什么情况下使用线程池? 单个任务处理的时间比较短 将需处理的任务的数量大 使用线程池的好处: 减少在创建和销毁线程上所花的时间以及系统资源的开销 如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”. 线程池工作原理: 为什么要用线程池? 诸如 Web 服务器.数据库服务器.文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务.请求以某种方式到达服务器,…
Pool对象是多个Worker对象的容器,同时也是它们的控制器,对Worker功能更高抽象. 比如Worker是河,而线程是运行在河里的船.Pool则是管理着多条河. <?php //继承Collectable垃圾收集类,好让Pool::collect进行收集 class Sql extends Collectable { private $sql = ''; private $data = array(); public function __construct($sql) { $this->…
我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间. 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果. 一.Java中的ThreadPoolExecutor类 java.uitl.concurrent.ThreadPoolExec…
ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行响应,如果请求过多的话,线程池将会按照策略等待或者创建新的线程进行响应直到达到上限.当线程池中的线程处于空闲状态一定时间后(具体多少看环境)线程池池内的空闲线程将会进行自我终结. 1.CLR的一个进程内会维护一个线程池,线程池被该进程内所有应用程序域共享.托管线程池中的线程为后台线程, 即线程的Is…