前台线程和后台线程的选择
2015-03-06 17:09
232 查看
什么时候用Thread ,, 什么时候用 ThreadPool..
当符合以下条件时就用Thread对象,否则还是用线程池较好。
1.你需要线程允许一个非普通优先级。所有的线程池线程都允许在普通优先级。当然,这你可以改变,但是不推荐,在线程池操作过程中,优先级的改变不会持续。
(线程的优先级..前台线程要高于后台线程.即使改变了后台线程的优先级..也不会持久)
2.你需要线程作为前台线程运转,从而防止程序终止一直到线程完成任务。线程池线程总是后台线程,如果CLR决定终止进程它们就不会完成任务。
(在公共语言运行库因为资源回收或者报错要结束该后台进程的时候,是直接Kill的..是不会提示的,很有可能你的任务并没有完成掉)
3.受计算限制的任务需要时间非常长;这样,我不会让线程池负担逻辑,因为它试图找出是否需要创建一个额外的线程。
(业务逻辑中需要创建的线程一般都使用前台线程,方便控制和追踪)
4.我想开始线程并很可能用Thread.Abort方法来过早的结束它。
(需要自由控制,不用时会在控制下干掉他.)发松岛枫
转载自: ^_^肥仔John /article/4741021.html
当符合以下条件时就用Thread对象,否则还是用线程池较好。
1.你需要线程允许一个非普通优先级。所有的线程池线程都允许在普通优先级。当然,这你可以改变,但是不推荐,在线程池操作过程中,优先级的改变不会持续。
(线程的优先级..前台线程要高于后台线程.即使改变了后台线程的优先级..也不会持久)
2.你需要线程作为前台线程运转,从而防止程序终止一直到线程完成任务。线程池线程总是后台线程,如果CLR决定终止进程它们就不会完成任务。
(在公共语言运行库因为资源回收或者报错要结束该后台进程的时候,是直接Kill的..是不会提示的,很有可能你的任务并没有完成掉)
3.受计算限制的任务需要时间非常长;这样,我不会让线程池负担逻辑,因为它试图找出是否需要创建一个额外的线程。
(业务逻辑中需要创建的线程一般都使用前台线程,方便控制和追踪)
4.我想开始线程并很可能用Thread.Abort方法来过早的结束它。
(需要自由控制,不用时会在控制下干掉他.)发松岛枫
转载自: ^_^肥仔John /article/4741021.html
相关文章推荐
- 前台线程与后台线程的选择
- 前台线程和后台线程之间的选择
- 后台线程与前台线程在运行性能上有什么区别
- 前台线程和后台线程
- c# 后台线程 访问前台控件并显示信息
- c#前台线程与后台线程的区别和联系
- 前台线程与后台线程的区别
- 如何将前台线程改为后台线程
- C#扫盲之:前台线程后台线程
- C# 前台线程与后台线程区别
- C#.Net前台线程与后台线程的区别
- SWT中从后台线程访问前台界面组件的问题
- 前台线程与后台线程,AfxGetApp->GetMainWnd()与AfxGetMainWnd的不同
- C#.Net前台线程与后台线程的区别
- c#前台线程与后台线程的区别和联系
- 前台利用jcrop做头像选择预览,后台通过django利用Uploadify组件上传图最终使用PIL做图像裁切
- C#.Net前台线程与后台线程的区别
- 前台线程和后台线程
- java前台线程和后台线程
- 前台、后台ui的选择