是的,synchronized
关键字在C#中可以用于多线程编程,以确保在同一时刻只有一个线程能够访问共享资源。它可以应用于方法或代码块。当应用于方法时,整个方法体将被同步。当应用于代码块时,需要指定一个对象作为锁。
以下是一个使用synchronized
关键字的示例:
using System;
using System.Threading;
class SynchronizedExample
{
private static object lockObject = new object();
public static void Main()
{
Thread thread1 = new Thread(SynchronizedMethod);
Thread thread2 = new Thread(SynchronizedMethod);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
}
public static void SynchronizedMethod()
{
lock (lockObject)
{
Console.WriteLine("Thread {0} is executing synchronized method.", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(1000); // Simulate some work
Console.WriteLine("Thread {0} has finished executing synchronized method.", Thread.CurrentThread.ManagedThreadId);
}
}
}
在这个示例中,我们创建了一个名为lockObject
的私有静态对象,用于在SynchronizedMethod
方法中进行同步。当一个线程进入lock
块时,它将获得lockObject
的锁。其他线程必须等待该锁被释放才能进入lock
块。这样可以确保在同一时刻只有一个线程能够执行SynchronizedMethod
方法中的代码。