本文着重简述一下ThreadPool线程池和线程池里面一个常用的方法ThreadPool.QueueUserWorkItem()
假设线程池中的线程数量上限是50,要执行的任务却有100个,而线程池中的线程数量到50上限之后就不会再去增加新的线程了,那么其余的50个任务会在线程池外进行等待,等某个线程执行完毕之后会继续从队列中执行任务。
在线程池中,管理器维护多个已经创建的线程,使每个线程可以被重复利用,从而达到节省线程创建时间的目的,提高线程使用效率。
如果使用Thread在创建和销毁这些线程都会消耗很多时间。
引用命名空间 System.Threading
ThreadPool里面有个静态QueueUserWorkItem()在不创建新线程的情况下执行此方法。
可以将方法排入队列以便执行。 此方法在有线程池线程变得可用时执行。
QueueUserWorkItem(WaitCallback callBack,object state)
WaitCallback callBack:表示线程池线程要执行的回调方法。WaitCallback 是个委托类型的。
object state:回调方法的参数。
返回结果:如果此方法成功排队,则为True;不成功为False
public void Main(string[] args)
{
//无参数
ThreadPool.QueueUserWorkItem(new WaitCallback(CheckUpdate));
//有参数
string name = "张三";
ThreadPool.QueueUserWorkItem(new WaitCallback(CheckUpdate2),name)
}
public void CheckUpdate(object o)
{
}
public void CheckUpdate2(object o)
{
//执行操作
if(o!=null)
{
Student stu = new Student();
stu.name = o.ToString();
}
}