是的,C# ThreadLocal
可以用于静态字段。ThreadLocal
类允许您为每个线程存储一个独立的值副本。当您将 ThreadLocal
应用于静态字段时,每个线程都将具有其自己的静态字段副本。
以下是一个使用 ThreadLocal
的静态字段的示例:
using System;
using System.Threading;
public class MyClass
{
// 使用 ThreadLocal 静态字段
private static readonly ThreadLocal _threadLocalValue = https://www.yisu.com/ask/new ThreadLocal();
public static void SetValue(int value)
{
_threadLocalValue.Value = https://www.yisu.com/ask/value;"Main thread value: " + MyClass.GetValue());
// 创建一个新线程
Thread newThread = new Thread(() =>
{
// 在新线程中设置值
MyClass.SetValue(20);
// 在新线程中获取值
Console.WriteLine("New thread value: " + MyClass.GetValue());
});
newThread.Start();
newThread.Join();
}
}
输出:
Main thread value: 10
New thread value: 20
在这个示例中,我们有一个名为 MyClass
的类,它具有一个静态 ThreadLocal
字段 _threadLocalValue
。我们提供了 SetValue
和 GetValue
方法来设置和获取线程局部变量的值。在 Main
方法中,我们设置了一个值并在同一线程中获取它。然后我们创建了一个新线程,在该线程中设置了另一个值并获取了它。请注意,每个线程都有其自己的 _threadLocalValue
副本,因此主线程和新线程中的值是独立的。