单例模式 线程
单例模式 线程检查:
public sealed class PreThreadSingleton { private static ThreadLocal<PreThreadSingleton> local = new ThreadLocal<PreThreadSingleton>(() => 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); } }