是的,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
方法中的代码。