• 【原创】C#零基础学习笔记012-多线程开发--End


    其他路径:

    CSDN: https://blog.csdn.net/wodehao0808

    微信公众号:程序喵星人

    更多资源和视频教程,QQ:1902686547

    12 多线程开发

    12.1 为什么要使用多线程

      1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。

      2.可以使用线程来简化编码。

      3.可以使用线程来实现并发执行。

    12.2 线程相关知识点

      基本知识

        1.线程与进程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。

        2.前台线程和后台线程:通过Thread类新建线程默认为前台线程。当所有前台线程关闭时,所有的后台线程也会被直接终止,不会抛出异常。

        3.挂起(Suspend)和唤醒(Resume):由于线程的执行顺序和程序的执行情况不可预知,所以使用挂起和唤醒容易发生死锁的情况,在实际应用中应该尽量少用。

        4.阻塞线程:Join,阻塞调用线程,直到该线程终止。

        5.终止线程:Abort:抛出ThreadAbortException异常让线程终止,终止后的线程不可唤醒。Interrupt:抛出ThreadInterruptException异常让线程终止,通过捕获异常可以继续执行。

        6.线程优先级:AboveNormal BelowNormal Highest Lowest Normal,默认为Normal。

    12.3 使用线程开发

      1.Thread类的使用

        使用Thread类可以创建和控制线程。在创建Thread对象后,就可以用Start方法启动线程。

    2.给线程传递数据

    12.4 Example: 线程

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Threading;  // 引入线程的命名空间

    // 线程

    namespace Lesson_42_1

    {

        class Program

        {

            static void Main(string[] args)

            {

                // ThreadStart 所定义的是不带参的委托

                Thread t1 = new Thread(new ThreadStart(test1));

                t1.Name = "线程1";

                t1.Start();

                // t1.IsBackground = true;  //线程在后台执行。放开代码后,test1执行结果不会输出到窗口。

                // ParameterizedThreadStart 定义的是带参的委托

                Thread t2 = new Thread(new ParameterizedThreadStart(test2));

                t2.Name = "线程2";

                t2.Priority = ThreadPriority.Highest;  // 线程优先级

                t2.Start("hello");

            }

            static void test1()

            {

                // Console.WriteLine("线程停止2秒执行");

                // Thread.Sleep(2000);  // 线程的休眠

                Console.WriteLine("此线程在此处阻塞2秒");

                Thread.CurrentThread.Join(2000);

                Console.WriteLine("当前线程的执行名字:" + Thread.CurrentThread.Name);

                Console.WriteLine("这是线程1所执行的方法");

            }

            static void test2(object s)

            {

                Console.WriteLine("当前线程的执行名字:" + Thread.CurrentThread.Name);

                Console.WriteLine("这是线程2所执行的方法,s = " + s);

            }

        }

    }

    C#零基础学习笔记到此结束。

    资源:https://download.csdn.net/download/wodehao0808/16213983

  • 相关阅读:
    logstash multiple piplines 配置方式
    filter-mutate过滤插件
    redis主从复制
    redis sentinel(哨兵)
    mongodb replica-set
    Linux入门篇(五)——Shell(一)
    Linux入门篇(四)——Vim的使用与Bash
    Linux入门篇(三)——文件与目录
    Linux入门篇(二)——文件
    Linux入门篇(一)——基本命令
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/14609210.html
Copyright © 2020-2023  润新知