多线程知识小结

来源:互联网 发布:冬天约会去哪里好 知乎 编辑:程序博客网 时间:2024/06/14 06:16

线程的定义

            #region 自定义线程
            ThreadStart cc = new ThreadStart(Getaa);
            Thread aa = new Thread(cc);
            aa.Name = "嘿嘿哈嘿";
            aa.IsBackground = true;
            aa.Priority = ThreadPriority.Highest;
            aa.Start();
            Console.WriteLine(aa.Name);
            #endregion

线程的简单表达方式

            #region 线程的简写方式
            ThreadStart aa = new ThreadStart(Getaa);
            Thread thread = new Thread(aa);
            thread.Start();

            Thread t = new Thread(new ThreadStart(Getaa));
            t.Start();

            Thread t = new Thread(Getaa);
            t.Start();

            Thread t = new Thread(new ThreadStart(delegate()
            {
                Console.WriteLine("早起的虫儿被鸟吃");
            }));
            t.Start();

            Thread t = new Thread(delegate()
            {
                Console.WriteLine("早起的虫儿被鸟吃");
            });
            t.Start();

            Thread t = new Thread(() =>
            {
                Console.WriteLine("早起的虫儿被鸟吃");
            });
            t.Start();
            #endregion

线程的优先级

            #region 线程的优先级

            //lamda表达式:就是为了简化匿名委托的编写
            //()表示传入Thread类的构造函数的方法没有参数,{}表示这个方法的方法体

            Thread t = new Thread(() =>
            {

                while (true)
                {
                     Console.WriteLine("早起的虫儿被鸟吃"+Thread .CurrentThread .ManagedThreadId);
                     Thread.Sleep(1000);
                }
            });
            t.Start();
            while (true)
            {
                Console.WriteLine("主线程先执行"+Thread .CurrentThread .ManagedThreadId);
                Thread.Sleep(1000);
            }
            #endregion

//*一个cpu同一时刻只能执行一个线程,但是cpu在不断的在两个或者多个线程之间切换,因为切换的事件很短,所以你感觉不出来停顿,windows操作系统默认一个线程最多执行30ms,就会马上切换到另一个线程,。比如从音乐播放器切换到word文档,再切换到word文档之前,姚先保存播放器的当前状态,然后等切换回来之后从当期的状态中恢复继续播放。

线程的终止

            Thread mythread = new Thread(() =>
            {
                int count = 0;
                while (true)
                {
                    count++;
                   
                    Console.WriteLine("子线程的id为{0}", Thread.CurrentThread.ManagedThreadId);
                    Thread.Sleep(1000);
                    if (count == 7)
                    {
                        //终止线程。
                        Thread.CurrentThread.Abort(); ;
                    }
                }

            });
            mythread.Start();

            Console.WriteLine("先执行主线程");

 

 

0 0
原创粉丝点击