线程池

本文介绍了线程池的工作原理及其在程序中的应用场景。通过使用线程池,可以提高线程的复用率,减少频繁创建和销毁线程带来的开销,尤其适用于处理大量短时间运行的任务。

在程序中,如果某个创建某种对象所需要的代价太高,同时这个对象又可以反复使用,那么我们往往就会准备一个容器,用来保存一批这样的对象。于是乎,我们想要用这种对象时,就不需要每次去创建一个,而直接从容器中取出一个现成的对象就可以了。由于节省了创建对象的开销,程序性能自然就上升了.,

ThreadPool class提供了一个线程池。

而线程池可用于发送工作项、处理异步 I/O、代表其他线程等待以及处理计时器。线程池允许在后台运行多个工作,而不需要为每个任务频繁地创建和销毁单独的线程,从而减少了开销。

 

线程池优点:提高了线程的利用率,非常适合工作任务非常小,而且又需要使用单独的线程来解决的问题。

什么时候用线程池?什么时候用手动创建线程?

1、能用线程池的就用线程池

2、我们想手动关闭线程的话那么必须手动创建了。 Abort()   Join()

3、我们需要对线程池的线程的优先级做设置的情景下,只能使用手动创建线程。

4、如果执行的线程执行时间特别长。

------------------------------------------------------------------------------------------------------------------------------------

扩展:普通的Windows应用程序(如控制台或WinForm/WPF),会将其设置为“处理器数 * 250”。也就是说,如果您的机器为2个2核CPU,那么CLR线程池的容量默认上限便是1000,也就是说,它最多可以管理1000个线程同时运行


线程池的任务处理顺序不确定的,线程池的线程都是后台线程  优先级是:Normal’

线程池的使用:

ThreadPool .QueueUserWorkItem(WaitCallback, Object)

将方法排入队列以便执行,并指定包含该方法所用数据的对象。此方法在有线程池线程变得可用时执行。

WaitCallback它表示要执行的方法。  Object包含方法所用数据的对象。

ThreadPool .QueueUserWorkItem(WaitCallback)

将方法排入队列以便执行。此方法在有线程池线程变得可用时执行。

WaitCallback它表示要执行的方法。

如果此方法成功排队,则为true;如果无法将该工作项排队,则引发OutOfMemoryException

异常

条件

ApplicationException

遇到了内存不足的情况。

OutOfMemoryException

无法将该工作项排队。

ArgumentNullException

callBack 为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值