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(); } }