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

不只是一个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
 Thread.AllocateDataSlot();//在现有现存的线程上分配未命名的数据槽,数据槽是用来存放特定于线程的数据的本地内存尸体,使用该方法的数据槽将在线程到期时被释放
Thread.AllocateNamedDataSlot("ThreadName");//在所有现存的线程上分配命名的数据槽,命名的数据槽必须被显示的释放
Thread.FreeNamedDataSlot("ThreadName");//释放以前分配的命名数据槽
Thread.GetData(new LocalDataStoreSlot());//为当前域检索当前线程指定的数据槽中存储的对象
Thread.GetNamedDataSlot("ThreadName"); //检索指定的命名的数据槽 Thread.SetData(new LocalDataStoreSlot(), "|");//为此线程的当前域把指定的对象存放在当前运行的线程指定的数

其他方法:

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

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

Abord 终止前程

Start 开始执行某个线程

以上是Thread类的基本介绍

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

复习及总结--.Net线程篇(3)的更多相关文章

  1. 复习及总结--.Net线程篇(2)

    复习总结 上一篇里讲到了使用委托异步调用的方式来使用多线程,这里介绍几个概念 这里贴出来一个关于应用程序域的帖子 http://www.cnblogs.com/firstyi/archive/2008 ...

  2. 复习及总结--.Net线程篇(1)

    老是没耐心写这些东西,最近想想也工作两年了,该对自己的东西做个整理了,不知道这次能坚持写几篇,总得来说尽量督促自己吧 言归正传,.net中的多线程主要可以使用两种方法进行调用 1,异步调用 2,Thr ...

  3. 复习及总结--.Net线程篇(4)

    这里要说的就是多线程的锁的问题了 锁:作用在于实现线程间的同步问题,最典型的是售票问题 1,InterLocked 提供的都是静态方法,用来同步对多个共享变量的访问,包括以原子方式递增,递减,比较和替 ...

  4. JAVA技术专题综述之线程篇(1)

    本文详细介绍JAVA技术专题综述之线程篇 编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield( ...

  5. Java面试知识点之线程篇(三)

    前言:这里继续对java线程相关知识点进行总结,不能间断. 1.yield()方法 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执 ...

  6. Java面试知识点之线程篇(二)

    前言:接上篇,这里继续对java线程相关知识点进行总结. 1.notify和notifyall的区别 notify()方法能够唤醒一个正在等待该对象的monitor的线程,当有多个线程都在等待该对象的 ...

  7. Java面试知识点之线程篇(一)

    前言:在Java面试中,一定会遇到线程相关问题,因此笔者在这里总结Java中有关线程方面知识点,多数从网上得来(文中会贴出主要参考链接),有些也是笔者在面试中所遇到的问题,如有错误,请不吝指正.主要参 ...

  8. Python3 与 C# 并发编程之~ 线程篇

      2.线程篇¶ 在线预览:https://github.lesschina.com/python/base/concurrency/3.并发编程-线程篇.html 示例代码:https://gith ...

  9. 【转】C#线程篇

    C# 温故而知新: 线程篇(一) C# 温故而知新: 线程篇(二) C# 温故而知新:线程篇(三) C# 温故而知新: 线程篇(四)

随机推荐

  1. js 将网页生成为html保存访问

    2012-04-03 今天实现了一个需求,主题是将浏览中的网页生成html保存起来,记录访问url,挂在公司网站上做案例.     首先忙活了N久的是去搜索生成html的js函数.   什么IE自带的 ...

  2. dango models and database ---- verbose name

    一.django 自带ORM: 1.在django中用models.Mode来描述一张数据库中的表.而列用models.*Field来描述列 from django.db import models ...

  3. ui-router(三)controller与template

    这篇就是在以前的基础上,把客户端angular.js 负责的部分整体串起来演示一下. 我们按照angular执行顺序来做前提准备: (1)Client 根目录下 index.html 首先加载angu ...

  4. ACdream 1084 寒假安排(阶乘素因子分解)

    题目链接:传送门   分析: 求A(n,m)转化成k进制以后末尾0的个数.对k素因子分解,第i个因子为fac[i], 第i个因子的指数为num[i],然后再对n的对A(n,m)进行素因子分解,设cou ...

  5. C++ 类中有虚函数(虚函数表)时 内存分布

    虚函数表 对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.简称为V-Table.在这个表中,主是要一个类的虚函数的地址表 ...

  6. Atitit.分布式远程调用  rpc  rmi  CORBA的关系

    Atitit.分布式远程调用  rpc  rmi  CORBA的关系 1. 远程调用(包括rpc,rmi,rest)1 2. 分布式调用大体上就分为两类,RPC式的,REST式的1 3. RPC(远程 ...

  7. UIWindow的一点儿思考

    转自:http://www.cnblogs.com/smileEvday/archive/2012/11/16/UIWindow.html 每一个IOS程序都有一个UIWindow,在我们通过模板简历 ...

  8. Ownerdrawn ComboBox

    [ToolboxBitmap(typeof(ComboBox))] class ComboBoxEx : ComboBox { public ComboBoxEx() { this.DrawMode ...

  9. Tablespace for table '`pomelo`.`bag`' exists. Please DISCARD the tablespace before IMPORT.

    //遇到的问题是,删除数据库之后,重新创建数据库,在创建数据库表的时候,明明没有该表,却提示存在这个表.这是数据库缓存造成的 //解决方法 FLUSH TABLES; /* 安装MySql数据库(略) ...

  10. IOS设备信息与机型对照表

    http://blog.csdn.net/olsQ93038o99S/article/details/78374343 参考别人的文章吧....