单例模式 线程检查:
public sealed class PreThreadSingleton
{
private static ThreadLocal local
= new ThreadLocal(() => new PreThreadSingleton());
public int Id;
private PreThreadSingleton()
{
Id = Thread.CurrentThread.ManagedThreadId;
}
public static PreThreadSingleton Instance => local.Value;
}
class Program
{
static void Main(string[] args)
{
var t1= Task.Factory.StartNew(()=>
Console.WriteLine("Task1:"+PreThreadSingleton.Instance.Id)
);
var t2 = Task.Factory.StartNew(() => {
Console.WriteLine("Task2:" + PreThreadSingleton.Instance.Id);
Console.WriteLine("Task2:" + PreThreadSingleton.Instance.Id);
}
) ;
Task.WaitAll(t1, t2);
}
}