1.如果你的机器为2个2核CUP, 那么CLR线程池容量默认:"处理理*250" = 1000
ThreadPool的作用在于更有效的利用线程。尽量少的去开新线程,而使用人家已经用完的线程。
线程池分配线程的流程是这样的
1.请求线程池分配线程
2.线程池查询可用线程池队列中的线程。
2.1.如果有可用线程,则使用可用线程,将可用线程从可用线程队列。
2.2.1.如果没有可用线程,并且线程池未达到上限,则新创建1个工作线程,并加入到线程池中。
2.2.2.如果没有可用线程,并且线程池已经达到上限,则等待任意一条线程池中的线程工作完毕,再回到第二步。
3.线程工作完毕后,通知线程池线程工作完毕。线程池将此线程放入到可用线程池。
ThreadPool简单理解,就是用 Monitor 和 Thread 2个类的进一步封装。
线程池中包含2种不同类型的线程,1种是工作线程,1种是IO线程。他们的工作内容不同,但都占用一个线程。
如果你真想开N条线程的话,建议直接使用Thread去创建。
ThreadPool的作用在于更有效的利用线程。尽量少的去开新线程,而使用人家已经用完的线程。
线程池分配线程的流程是这样的
1.请求线程池分配线程
2.线程池查询可用线程池队列中的线程。
2.1.如果有可用线程,则使用可用线程,将可用线程从可用线程队列。
2.2.1.如果没有可用线程,并且线程池未达到上限,则新创建1个工作线程,并加入到线程池中。
2.2.2.如果没有可用线程,并且线程池已经达到上限,则等待任意一条线程池中的线程工作完毕,再回到第二步。
3.线程工作完毕后,通知线程池线程工作完毕。线程池将此线程放入到可用线程池。
ThreadPool简单理解,就是用 Monitor 和 Thread 2个类的进一步封装。
线程池中包含2种不同类型的线程,1种是工作线程,1种是IO线程。他们的工作内容不同,但都占用一个线程。
如果你真想开N条线程的话,建议直接使用Thread去创建。