ThreadPool学习草稿1
原文发布时间为:2010-10-27 —— 来源于本人的百度文章 [由搬家工具导入]
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace TestThreadPool
{
class Program
{
static object locker = new object();
static int runningThreads = 0;
static void Main(string[] args)
{
try
{
ThreadPool.SetMaxThreads(4, 4); //设置最大线程数 using System.Threading;
runningThreads = 10;
for (int i = 0; i < runningThreads; i++)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Auto), i);//线程池指定线程执行Auto方法
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
int iWhileNumber = 0;
lock (locker)
{
while (runningThreads > 0)
{
Monitor.Wait(locker);
iWhileNumber++;
}
}
Console.WriteLine("结束了,共循环了" + iWhileNumber + "次");
//Environment.Exit(0);
Console.ReadLine();
}
public static void Auto(object i)//多线程执行的方法
{
try
{
int d = 4 / (int)i;
if (string.Equals(i, 2))
{
Thread.Sleep(1000);
}
Console.WriteLine(i.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
lock (locker)
{
runningThreads--;
Monitor.Pulse(locker);
}
}
}
}
}