• 线程基础


          线程比较重要,最近面试的话几乎都会问到, 日常中也会用到(不知不觉),到底线程是个什么鬼?结合最近看的几本书,这里做一个记录

    1.什么是进程?线程?多线程?优点?缺点?

           对于计算机而言,每双击一个应用程序,系统都会对此程序分配一个或者多个进程,这一点打开工作管理员界面(注销)即可明白。如此,进程则可以理解为线程的容器,由系统创建,又在具体执行过程中创建了线程。而线程是进程中的独立执行单元,对于系统而言,是通过调度线程来是应用程序工作。多线程可狭义的理解程序中包含有多个单线程的执行流。

    优点: 由于存在优先级、等待等机制,这使得多线程能提高CPU的利用率,当不需要某个线程时,可调用等待方法来达到目的

    缺点: 线程需要占用内存,线程越多占用内存也越多; 
               多线程需要协调和管理,所以需要CPU时间跟踪线程; 
               线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题;
               线程太多会导致控制成本增加,会增加不可控的的风险

    2.使用C#创建一个线程

            public static void WirteNumber()
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine(i);
                }
            }
    
            public static void Maintest()
            {
                Thread t = new Thread(WirteNumber);
                t.Start();  //執行線程
            }

    初看,并不觉有什么神奇之处,仅仅是多了一个Thread 对象,利用反射可以查到,Thread的构造函数有两类,一类带参数,一类不带参数

    如: 不带参数(ThreadStart 委托) --     t.Start()

            带参数(ParameterizedThreadStart 委托) --  t.Start(Para)

    而对于其他的简单操作,这里列表统计下

    3.前台线程和后台线程

         在一个进程中,当所有前台线程停止运行后,CLR会强制结束所有仍在运行的后台程线程,这些后台线程会被直接终止,而不会抛出异常,只有设置了IsBackground属性为True,Thread类所创建的线程才为后台线程,否则为前台线程。

        如果想让后台线程先执行完,那么可以使用 join、sleep 方法来实现

     4. 使用 C# 中的 lock 关键字

     5. 使用 Monitor 类锁定资源

         锁可以用来保护资源,常见的订票系统,比如客户每订一张票,后台系统的数据库就减少一张,如果共有1000张,当A用户下单的时刻,后台票数(资源)是被锁起来,即同一时刻只能有一个客户来下单,这样后台出票的顺序也是连续的,然后B客户下单。若多客户同时下单,后台票号就不能连贯输出。具体例子如下:

     6. 处理异常

         程序一单运行,就有可能出现异常,优秀的代码只是出现异常的可能性较小,如何正确的去捕捉、处理 异常,是程序中必须要考虑的问题。线程也不例外。

        上面的内容来自《C#线程基础》这本书,其实说的都是很简单的基础内容,看看就好.

     7. 应用线程

       真正项目中,会有一些线程的综合应用,包括线程池、异步多线程等等,实际项目中对于 Task、Timers 这这种用的是最多的,使用提来也方便,操作也简单。

  • 相关阅读:
    转自:java 文件格式二进制头文件校验
    转载:Web安全X-FRAME-OPTIONS 出现两个或多个的原因
    转载:Web安全 之 X-Frame-Options响应头配置
    JavaWeb-用过滤器修改请求的返回状态码
    文件上传漏洞(绕过姿势)
    一个神奇的bug
    在mac上访问自带服务器权限问题
    学习使用crosswalk
    多个target下编译的时候出错问题的解决
    解决mac插入U盘不显示标识问题
  • 原文地址:https://www.cnblogs.com/Sientuo/p/7264489.html
Copyright © 2020-2023  润新知