c#

c# synchronized能用于多线程吗

小樊
81
2024-12-01 10:38:12
栏目: 编程语言

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

0
看了该问题的人还看了