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

不只是一个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关键字

最新文章

  1. sublimetext3中保存代码片段
  2. AMD and CMD are dead之KMD.js版本0.0.2发布
  3. APP性能测试
  4. linux kernel tainted
  5. 【转】关于KDD Cup '99 数据集的警告,希望从事相关工作的伙伴注意
  6. Sql Server 常用的查询
  7. ZOJ3161
  8. 关于Python网络爬虫实战笔记③
  9. 添加以及删除className
  10. 我的第一个python web开发框架(10)——工具函数包说明(一)
  11. mysql字符集问题 错误代码: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_croatian_ci,IMPLICIT) for operation '='
  12. AOV网络和Kahn算法拓扑排序
  13. Devexpress 常用的功能
  14. 如何在Window下安装node\npm\cnpm,并安装vue.js,创建项目
  15. java 括号匹配 成对
  16. 二、activiti工作流-创建25张表
  17. 使用IDEA搭建Springboot+mybatis
  18. 我的第一个博客——Fragment遇到的问题
  19. python re正则
  20. sysbench压力测试工具安装及使用

热门文章

  1. jquery 获取html <img /> 位置时出错问题
  2. mosquitto ---SSL/TLS 单向认证+双向认证
  3. 常用RGB颜色表
  4. Mysql 创建表和删除表
  5. mysql group replication 安装&配置详解
  6. 从JavaScript 数组去重看兼容性有关问题,及性能优化(摘自玉伯博客)
  7. vue组件调用(全局调用和局部调用)
  8. connect: Network is unreachable解決方法
  9. Atitit。团队建设--管理最佳实践--如何留住核心人才,防止人才流失 ??
  10. pcie dma的玩法