线程的创建,异常处理
//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);
        }
    }

京公网安备 11010502036488号