单例模式 线程

单例模式 线程检查:

    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);
        }
    }

 

posted @ 2022-05-12 17:44  后跳  阅读(27)  评论(0编辑  收藏  举报