在C#中,没有像Java那样的synchronized
关键字
以下是一个简单的示例,展示了如何在C#中使用lock
语句:
using System;
using System.Threading;
class Program
{
private static readonly object _lockObject = new object();
public static void Main()
{
Thread thread1 = new Thread(DoWork);
Thread thread2 = new Thread(DoWork);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
Console.WriteLine("Finished.");
}
private static void DoWork()
{
lock (_lockObject)
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} is working...");
Thread.Sleep(1000);
}
}
}
}
在这个示例中,我们创建了两个线程,它们都调用DoWork
方法。DoWork
方法中的lock
语句确保同一时间只有一个线程可以访问该代码块。这样可以防止多个线程同时访问共享资源(在本例中为控制台),从而避免潜在的数据不一致和竞争条件。