C#线程池ThreadPool
2013-11-18 15:20
211 查看
线程池可以减少频繁的线程创建和销毁对系统性能的影响。
ThreadPool默认是后台属性,IsBackground是true。
线程池通过线程命名空间的ThreedPool类来实现,要请求由线程池中的一个线程来处理你的任务,需要调用QueueUserWorkItem方法。
要注意,当你向线程池提交一个人物请求后,你就无法再取消它了。另外,线程池中每个线程按照默认的优先级进行。
向线程池提交任务使用WaitCallback委托。线程池会对这个任务自动调用一个线程来处理。
public delegate void WaitCallback(object state);
ThreadPool默认是后台属性,IsBackground是true。
线程池通过线程命名空间的ThreedPool类来实现,要请求由线程池中的一个线程来处理你的任务,需要调用QueueUserWorkItem方法。
要注意,当你向线程池提交一个人物请求后,你就无法再取消它了。另外,线程池中每个线程按照默认的优先级进行。
向线程池提交任务使用WaitCallback委托。线程池会对这个任务自动调用一个线程来处理。
public delegate void WaitCallback(object state);
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ThreadPoolTest { class Program { static void Main(string[] args) { int newThreads; int nCompletionPortThreads; ThreadPool.SetMaxThreads(10, 200); //设置线程池的大小 //获取辅助线程数目和异步IO线程数据 ThreadPool.GetMaxThreads(out newThreads, out nCompletionPortThreads); Console.WriteLine("辅助线程数目{0},异步IO线程数目{1}", newThreads, nCompletionPortThreads); for (int i = 0; i < 5; i++) { ThreadPool.QueueUserWorkItem(JobForAThread); } Thread.Sleep(3000); Console.ReadKey(); } static void JobForAThread(object state) { for (int i = 0; i < 3; i++) { Console.WriteLine("循环第{0}次,当前运行的线程ID是{1}", i, Thread.CurrentThread.ManagedThreadId); Thread.Sleep(50); } } } }
相关文章推荐
- newScheduledThreadPool延时任务线程池,实现原理
- 大文件 and 多下载任务的封装(一)---线程池的封装(ThreadPool,TheadManager)
- 线程池ThreadPool
- Spring中ThreadPoolTaskExecutor的线程调度及问题
- 基于C++11的线程池(threadpool),简洁且可以带任意多的参数
- 使用Task代替ThreadPool和Thread
- 线程池(ThreadPool)
- Executors.newFixedThreadPool(NTHREADS)线程池数量设置多少合适?
- java核心知识点学习----重点学习线程池ThreadPool
- c#:ThreadPool实现并行分析,并实现线程同步结束
- A better way to shutdown the thread pool in Java
- ThreadPool 线程池的作用
- Android创建全局线程池类之newCachedThreadPool
- Spring ThreadPoolTaskExecutor线程池
- 自定义线程池ThreadPool
- .NET ThreadPool 线程池 控制台 和 Winform 应用
- c++ threadpool.cpp
- Android平台下线程池管理工具-ThreadPoolHelp
- scala线程demo-newFixedThreadPool
- KMThreadPool: 8 –Download Source And Examples