/***
*进一步显示多线程死锁问题
*
*
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 线程问题同步示例2
{
class Program
{
/// <summary>
/// 测试多线程死锁问题,演示2
/// </summary>
public void Test1()
{
TestClass testObj = new TestClass();
Thread t1 = new Thread(testObj.Add);
t1.Name = "t1";
t1.Start();
Thread t2 = new Thread(testObj.Add);
t2.Name = "t2";
t2.Start();
}
static void Main(string[] args)
{
Program obj = new Program();
obj.Test1();
}
}
class TestClass
{
private int _Num = 0;
private object obj = new object();//设置一个“锁",必须是"引用类型"
public void Add()
{
while (true)
{
lock (obj)
{
_Num++;
Thread.Sleep(200);
Console.WriteLine(Thread.CurrentThread.Name + ":" + _Num);
}
}
}
}
}
*进一步显示多线程死锁问题
*
*
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace 线程问题同步示例2
{
class Program
{
/// <summary>
/// 测试多线程死锁问题,演示2
/// </summary>
public void Test1()
{
TestClass testObj = new TestClass();
Thread t1 = new Thread(testObj.Add);
t1.Name = "t1";
t1.Start();
Thread t2 = new Thread(testObj.Add);
t2.Name = "t2";
t2.Start();
}
static void Main(string[] args)
{
Program obj = new Program();
obj.Test1();
}
}
class TestClass
{
private int _Num = 0;
private object obj = new object();//设置一个“锁",必须是"引用类型"
public void Add()
{
while (true)
{
lock (obj)
{
_Num++;
Thread.Sleep(200);
Console.WriteLine(Thread.CurrentThread.Name + ":" + _Num);
}
}
}
}
}