A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 管章鹏 中级黑马   /  2013-4-1 20:39  /  1047 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 管章鹏 于 2013-4-2 08:08 编辑

Thread和Process之间有什么区别么?最近在学习多线程,搞不明白他们之间应该怎么去用,还有.NET新引入了Application Domain的概念,这样他们三个之间有什么区别么?求大神予以解答。。。。。。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

2 个回复

倒序浏览
1.一个进程可以有多个应用程序域,而应用程序域在创建的时候会默认创建三个域:系统域,共享域,默认域(开发人员写的所有的代码在此域上执行)。注意:域的概念只有在DotNet程序下才有。
程序一运行,就有一个默认的主进程,有一个默认的主域,主域下面有一个默认的主线程,也就是Main()方法。

2.初始化一个线程Thread thread=new Thread(要执行的无参无返回值的方法);
启动线程:thread.Start();
设置线程是否是前台线程:thread.IsBackground=true;
如果设为true标识当前线程为后台线程。
给线程起名字:thread.Name("开发人员用的");
给线程设置优先级:thread.Priority=ThreadPriority.AboverNormal;优先级最高。
关闭线程:thread.Abort();
等待线程执行结束:thread.Join();//哪个线程调用此方法,就是让哪个线程等待thread线程。
BeginInvoke();//启动一个新的线程,新的线程回调函数指向委托的方法。(属于后台线程,此线程是由.net提供的线程池提供)。var result=addDel.BeginInvoke();
如何去拿另外一个线程执行方法的结果?
int retVal=addDel.EndInvoke(result);

3.当一个委托被多个线程重复使用,会产生溢出怎么办?用lock()方法来锁定这个委托对象,一旦对象被锁定之后,那么就只能有一个线程可以访问这个委托对象。

4.线程池的概念。ThreadPool。QueueUserWorkItem();使用线程池会极大的提高线程的使用效率。
线程池默认最小4个,最大是1024个线程。

1.在C与C++语言中,函数指针没有约束,可以指向任何函数,而C#语言中的委托则只能指向单独格式的方法签名的方法。

2.扩展方法的复习:静态类,静态方法,this关键字。
在定义扩展方法的时候,不管是方法签名,还是返回值和参数,都要定义好List<T>,不能省略,在使用的时候方法可以省略List<T>.


一些浅略的笔记,希望可以帮到你。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
杜磊 发表于 2013-4-1 22:37
1.一个进程可以有多个应用程序域,而应用程序域在创建的时候会默认创建三个域:系统域,共享域,默认域(开 ...

学习了,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马