C# 中的 synchronized
关键字主要用于确保在同一时刻只有一个线程可以访问共享资源。它适用于以下场景:
synchronized
关键字来确保资源的线程安全。public class SharedResource
{
private int counter = 0;
public synchronized void Increment()
{
counter++;
}
public synchronized int GetCounter()
{
return counter;
}
}
synchronized
关键字。public class MyClass
{
public synchronized void MySynchronizedMethod()
{
// 同步代码
}
}
synchronized
关键字可以确保在同一时刻只有一个线程执行临界区代码。public class CriticalSectionExample
{
private object lockObject = new object();
public void CriticalSectionMethod()
{
lock (lockObject)
{
// 临界区代码
}
}
}
Hashtable
、Queue
等)是非线程安全的。如果需要在多线程环境中使用这些集合,可以使用 synchronized
关键字来确保线程安全。public class ThreadSafeCollection<T>
{
private readonly Queue<T> _queue = new Queue<T>();
public void Enqueue(T item)
{
lock (_queue)
{
_queue.Enqueue(item);
}
}
public T Dequeue()
{
lock (_queue)
{
if (_queue.Count == 0)
return default(T);
var item = _queue.Dequeue();
return item;
}
}
}
需要注意的是,过度使用 synchronized
关键字可能会导致性能下降,因为它会限制多个线程同时执行。在实际应用中,可以根据具体需求选择合适的同步机制,如 lock
语句、Monitor
类、SemaphoreSlim
类等。