复习及总结--.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
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关键字
最新文章
- sublimetext3中保存代码片段
- AMD and CMD are dead之KMD.js版本0.0.2发布
- APP性能测试
- linux kernel tainted
- 【转】关于KDD Cup '99 数据集的警告,希望从事相关工作的伙伴注意
- Sql Server 常用的查询
- ZOJ3161
- 关于Python网络爬虫实战笔记③
- 添加以及删除className
- 我的第一个python web开发框架(10)——工具函数包说明(一)
- mysql字符集问题 错误代码: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_croatian_ci,IMPLICIT) for operation '='
- AOV网络和Kahn算法拓扑排序
- Devexpress 常用的功能
- 如何在Window下安装node\npm\cnpm,并安装vue.js,创建项目
- java 括号匹配 成对
- 二、activiti工作流-创建25张表
- 使用IDEA搭建Springboot+mybatis
- 我的第一个博客——Fragment遇到的问题
- python re正则
- sysbench压力测试工具安装及使用
热门文章
- jquery 获取html <;img />; 位置时出错问题
- mosquitto ---SSL/TLS 单向认证+双向认证
- 常用RGB颜色表
- Mysql 创建表和删除表
- mysql group replication 安装&;配置详解
- 从JavaScript 数组去重看兼容性有关问题,及性能优化(摘自玉伯博客)
- vue组件调用(全局调用和局部调用)
- connect: Network is unreachable解決方法
- Atitit。团队建设--管理最佳实践--如何留住核心人才,防止人才流失 ??
- pcie dma的玩法