1.代碼實例:
public class ThreadTest4
{
public static void Init()
{
//多個線程修改同一個值,使用lock鎖解決並發
for (int i = 0; i < 4; i++)
{
Task.Factory.StartNew(ThreadMethod);
}
}
public static int Number = 1;
public static void ThreadMethod()
{
while (true)
{
lock (typeof(ThreadTest4))
{
Number++;
Console.WriteLine("當前線程:{0},Number={1}", Thread.CurrentThread.ManagedThreadId, Number);
Thread.Sleep(500);
}
}
}
}
使用lock鎖前后結果對比:
使用Lock鎖前,多線程修改同一數據會出現相同結果,
使用Lock鎖后,修改數據保證了數據的在多個線程操作時的同步。


2.使用Lock鎖前后的性能對比:
將同一變量Number累加到30,
對於簡單內容主線線程執行時間:5.8秒
多線程線程同步執行時間:5.9秒
多線程異步執行時間:1.5秒
結論異步操作性能相對性能提升明顯
實例代碼:
public class ThreadTest5
{
public static void Init()
{
//多個線程修改同一個值,使用lock鎖解決並發
Start = DateTime.Now;
for (int i = 0; i < 4; i++)
{
Task.Factory.StartNew(ThreadMethod);
}
}
public static DateTime Start { get; set; }
public static int Number = 1;
public static void ThreadMethod()
{
while (true)
{
lock (typeof(ThreadTest4))
{
Number++;
if (Number > 30)
{
StopHandle();
}
Console.WriteLine("當前線程:{0},Number={1}", Thread.CurrentThread.ManagedThreadId, Number);
Thread.Sleep(200);
}
}
}
//結束處理
public static void StopHandle()
{
//結束當前線程,並輸出代碼執行時間
Console.WriteLine("ID={0}線程結束,結束Number={1},執行時長:{2}",Thread.CurrentThread.ManagedThreadId,
Number,
DateTime.Now-Start);
//結束當前線程
Thread.CurrentThread.Abort();
}
}



