zoukankan      html  css  js  c++  java
  • 复习及总结--.Net线程篇(3)

    不幸的发现,原来多线程的东西还有好多。

      不只是一个Thread就能把事情做完的,好吧,孤陋寡闻了

    这里总结下  复习及总结--.Net线程篇(2)里的两个概念AppDomain和ThreadPool

    AppDomain:作用是为了隔离程序集之间的线程,打个比方吧,

                         现在有100个人(线程)同时工作,有50个人(线程)不想干了,说要辞职,那么这样肯能会影响到另外的50个人,那么公司(操作系统)就使用AppDomain这个东西来隔离这50个不想做事的人

                         这就是AppDomain的作用

    ThreadPool: 让频繁创建的线程有一个归属,不用每次都在用某个线程的时候都去创建,提高了性能

                        再打个比方,我们要链接数据库,这个时候就牵扯到了频繁的创建数据库链接,数据库链接数量,信息对应用程序来说是固定的,所以没必要再使用一次就创建一次,这样效率会很底下

                        同时,数据库链接并不是始终都在保持链接的,所以,MS就使用了一个叫链接池的概念,这里的线程池和连接池很类似

    开始本篇的主题 Thread

        先介绍两个委托

         1,ParameterizedThreadStart

                   该委托签名为   delegate void ParameterizedThreadStart(Object param),

                  作用是给Thread的构造函数传入一个包含参数的方法签名

         2,ThreadStart

                 该委托签名为   delegate void ThreadStart(),

                 作用是给Thread构造函数传入一个不带参数且无返回值的方法签名

       Thread属性

             三个静态属性
                //  Thread.CurrentContext //获取当前线程的上下文
               //  Thread.CurrentPrincipal //获取当前线程的负责人
               //  Thread.CurrentThread //获取当前线程的引用
    实例属性
                Thread t1 = new Thread(Main);
                 //t1.ApartmentState   //设置单元状态,决定线程在单线程下执行还是在多线程下执行
                 //t1.IsAlive  //在线程已启动并仍然活动的情况下返回True
                //t1.IsBackground//是否为后台线程,前后台的不同在于:它不必在调用它的进程结束前完成执行或被终止
                //t1.Name    //线程名称
                //t1.Priority   线程优先级
                //t1.ThreadState 返回线程的状态,默认情况是UnStarted
    1 Thread.AllocateDataSlot();//在现有现存的线程上分配未命名的数据槽,数据槽是用来存放特定于线程的数据的本地内存尸体,使用该方法的数据槽将在线程到期时被释放
    2             Thread.AllocateNamedDataSlot("ThreadName");//在所有现存的线程上分配命名的数据槽,命名的数据槽必须被显示的释放
    3             Thread.FreeNamedDataSlot("ThreadName");//释放以前分配的命名数据槽
    4             Thread.GetData(new LocalDataStoreSlot());//为当前域检索当前线程指定的数据槽中存储的对象
    5             Thread.GetNamedDataSlot("ThreadName"); //检索指定的命名的数据槽
    6 
    7 
    8             Thread.SetData(new LocalDataStoreSlot(), "|");//为此线程的当前域把指定的对象存放在当前运行的线程指定的数

    其他方法:

       Sleep 当前线程休眠指定的时间

       Join 当指定的线程被执行完成,或者终止后继续调用线程

       Abord 终止前程

       Start 开始执行某个线程

    以上是Thread类的基本介绍

    接下来讲讨论一下线程锁的机制也就是Lock关键字

  • 相关阅读:
    用户描述
    课堂练习
    一阶段11.21
    一阶段11.20
    一阶段 11.19
    自己动手写spring(五) bean的生命周期管理
    自己动手写spring(四) 整合xml与注解方式
    自己动手写spring(三) 支持注解方式
    自己动手写spring(二) 创建一个bean工厂
    自己动手写spring(一) 使用digester
  • 原文地址:https://www.cnblogs.com/anbylau2130/p/3458229.html
Copyright © 2011-2022 走看看