C#多線程ThreadPool線程池詳解
簡單說明一下:
線程池可以看做容納線程的容器;一個應(yīng)用程序最多只能有一個線程池;ThreadPool靜態(tài)類通過QueueUserWorkItem()方法將工作函數(shù)排入線程池; 每排入一個工作函數(shù),就相當(dāng)于請求創(chuàng)建一個線程;
線程池的作用:
1、線程池是為突然大量爆發(fā)的線程設(shè)計的,通過有限的幾個固定線程為大量的操作服務(wù),減少了創(chuàng)建和銷毀線程所需的時間,從而提高效率。
2、如果一個線程的時間非常長,就沒必要用線程池了(不是不能作長時間操作,而是不宜。),況且我們還不能控制線程池中線程的開始、掛起、和中止。
一些使用例子:
實例一:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ThreadPoolDemo
{
class Program
{
static void Main(string[] args)
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool),new string[] {"drsw","sfs","sdfs"});
Console.ReadKey();
}
public static void TestThreadPool(object state)
{
string[] arry = state as string[]; //傳過來的參數(shù)值
int workerThreads = 0;
int completionPortThreads = 0;
System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);
Console.Write(DateTime.Now.ToString() + "--" + arry[0] + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads);
}
}
}
上述代碼運行結(jié)果:

使用例子二:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ThreadPoolDemo
{
class Program
{
static void Main(string[] args)
{
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(TestThreadPool));
Console.ReadKey();
}
public static void TestThreadPool(object state)
{
int workerThreads = 0;
int completionPortThreads = 0;
System.Threading.ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads);
Console.Write(DateTime.Now.ToString() + "----workerThreads=" + workerThreads + "----completionPortThreads=" + completionPortThreads);
}
}
}
上述代碼運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Winform中DataGridView導(dǎo)出為Excel的實現(xiàn)示例
本文主要介紹了C# Winform中DataGridView導(dǎo)出為Excel的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
C#使用FtpWebRequest與FtpWebResponse完成FTP操作
這篇文章介紹了C#使用FtpWebRequest與FtpWebResponse完成FTP操作的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
C#使用Directoryinfo類獲得目錄信息和屬性的方法
這篇文章主要介紹了C#使用Directoryinfo類獲得目錄信息和屬性的方法,涉及C#操作目錄的技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04
c#用Treeview實現(xiàn)FolderBrowerDialog 和動態(tài)獲取系統(tǒng)圖標(運用了Win32 
其實,FolderBrowerDialog 很好用呢,有木有啊親,反正我特別的喜歡,微軟大哥把這個瀏覽文件夾的東東封裝的多好呀2013-03-03
C#使用委托(delegate)實現(xiàn)在兩個form之間傳遞數(shù)據(jù)的方法
這篇文章主要介紹了C#使用委托(delegate)實現(xiàn)在兩個form之間傳遞數(shù)據(jù)的方法,涉及C#委托的使用技巧,需要的朋友可以參考下2015-04-04

