using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
//Download by http://www.codefans.net
namespace UseMonitor
{
class Program
{
static void Main(string[] args)
{
TestMonitor tm = new TestMonitor(); //实例化TestMonitor类
for (int i = 0; i < 3; i++) //创建3个线程,模拟多线程运行
{
Thread th = new Thread(tm.TestRun); //创建线程并绑定TestRun方法
th.Start(); //启动线程
}
Console.Read();
}
}
//线程要访问的公共资源类
class TestMonitor
{
private Object obj = new object(); //定义同步对象
private int i = 0; //定义整型变量,用于输出显示
public void TestRun() //定义线程的绑定方法
{
Monitor.Enter(obj); //在同步对象上获取排他锁
Console.WriteLine("i的初始值为:" + i.ToString());
Thread.Sleep(1000); //模拟做一些耗时的工作
i++; //变量i自增
Console.WriteLine("i在自增之后的值为:" + i.ToString());
Monitor.Exit(obj); //退出同步
}
}
}