C#多线程编程(2):线程的同步
2010-09-30 21:09:36 来源:WEB开发网经过这样处理之后系统的运行结果就会正常。效果如下:
总的来说,lock语句是一种有效的、不跨越多个方法的小代码块同步的做法,也就是使用lock语句只能在某个方法的部分代码之间,不能跨越方法。
Monitor类
针对上面的代码,如果使用Monitor类来同步的话,代码则是如下效果:
private void Run()
{
while (ticketList.Count > 0)//①
{
Monitor.Enter(objLock);
if (ticketList.Count > 0)
{
string ticketNo = ticketList[0];//②
Console.WriteLine("{0}:售出一张票,票号:{1}", Thread.CurrentThread.Name, ticketNo);
ticketList.RemoveAt(0);//③
Thread.Sleep(1);
}
Monitor.Exit(objLock);
}
}
更多精彩
赞助商链接