溫馨提示×

C#中synchronized關鍵字的用法示例

c#
小樊
82
2024-09-08 23:40:15
欄目: 編程語言

在C#中,synchronized 并不是一個關鍵字。但是,您可以使用 lock 語句來實現(xiàn)類似的功能,確保在同一時間只有一個線程可以訪問特定的代碼塊。

下面是一個使用 lock 語句的示例:

using System;
using System.Threading;

class Program
{
    private static readonly object _lockObject = new object();
    private static int _counter = 0;

    static void Main(string[] args)
    {
        Thread t1 = new Thread(IncrementCounter);
        Thread t2 = new Thread(IncrementCounter);

        t1.Start();
        t2.Start();

        t1.Join();
        t2.Join();

        Console.WriteLine("Counter: " + _counter);
    }

    private static void IncrementCounter()
    {
        for (int i = 0; i < 100000; i++)
        {
            lock (_lockObject)
            {
                _counter++;
            }
        }
    }
}

在這個示例中,我們創(chuàng)建了兩個線程 t1t2,它們都會調(diào)用 IncrementCounter 方法。IncrementCounter 方法中的 lock 語句確保在同一時間只有一個線程可以訪問 _counter++ 代碼塊。這樣可以防止多線程導致的競態(tài)條件,確保 _counter 的值在兩個線程完成后正確地增加到200000。

0