线程的创建,异常处理

//C#线程
    public class thread
    {
        public void th()
        {
            //创建
            var task = new Task(() =>
            {
                for (int i = 0; i < 5000; i++)
                {
                    System.Console.WriteLine("++++" + i);
                }
            });

            task.Start();    //只是开始,不一定要执行完

            // 线程异常处理1
            task.ContinueWith((t) => { Console.WriteLine(task.Exception); }, TaskContinuationOptions.OnlyOnFaulted);

            // 线程异常处理2
            try
            {

                task.Wait();   //等待执行完
            }
            catch (Exception s)
            {

                System.Console.WriteLine(s);

            }

        }

       
      

并行执行,效率更高

  public void thread2()
        {
            var list  =new List<int>();
            for(int i =0;i<5000;i++){
                list.Add(i); 
            }

            //并行执行,效率更高
            Parallel.ForEach(list, i => i++);
            list.AsParallel().ForAll(i => i++);


        }

       

线程加锁,lock安全,效率低,有原子性

 //线程加锁,lock安全,效率低,有原子性
        private static readonly object syn = new object();
        public void thread3()
        {
            int j=0;
           
            var th1 = new Task(() =>
            {
                for (int i = 0; i < 5000; i++)
                {
                    lock (syn)
                    {
                        j++;
                    }

                }
            });
            var th2 = new Task(() =>
            {
                for (int i = 0; i < 5000; i++)
                {
                    lock (syn)
                    {
                        j--;
                    }

                }
            });
            th1.Start();
            th2.Start();
            Task.WaitAll(th1, th2);
        }

    }