阅读量:0
在C#中,synchronized
并不是一个关键字。但是,您可以使用 lock
语句来实现类似的功能,确保在同一时间只有一个线程可以访问特定的代码块。
下面是一个使用 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++; } } } }
在这个示例中,我们创建了两个线程 t1
和 t2
,它们都会调用 IncrementCounter
方法。IncrementCounter
方法中的 lock
语句确保在同一时间只有一个线程可以访问 _counter++
代码块。这样可以防止多线程导致的竞态条件,确保 _counter
的值在两个线程完成后正确地增加到200000。