〇、前言
对于 Thread 和 ThreadPool 已经是元老级别的类了。Thread 是 C# 语言对线程对象的封装,它从 .NET 1.0 版本就有了,然后 ThreadPool 是 .Net Framework 2.0 版本中出现的,都是相当成熟的存在。
当然,现在已经出现了 Task 和 PLinq 等更高效率的并发类,线程和线程池在实际开发中逐渐减少了,但是不能不知道他们的用法,因为总有需要对接的内容,别人用了你也得能看懂。
本文将结合示例,简单介绍下 Thread 和 ThreadPool。
一、Thread 类
Thread 类的功能就是,创建和控制线程,设置其优先级并获取其状态。
下边代码简单示例说明下 Thread 的相关内容:
public static void Main() |
|
{
|
|
// (1) |
|
//var th1 = new Thread(ExecuteInForeground); |
|
//th1.Start(); |
|
// (2) |
|
//var th2 = new Thread(ExecuteInForeground); |
|
//th2.IsBackground = true; |
|
//th2.Start(); |
|
// (3) |
|
//ThreadPool.QueueUserWorkItem(ExecuteInForeground); |
|
Thread.Sleep(1000); |
|
// Console.WriteLine($"主线程 ({Thread.CurrentThread.ManagedThreadId}) 即将退出 执行 Join() 方法。。。"); |
|
// th2.Join(); |
|
Console.WriteLine($"主线程 ({Thread.CurrentThread.ManagedThreadId}) 即将退出。。。"); |
|
//Console.ReadLine(); |
|
} |
|
private static void ExecuteInForeground(object state) |
|
{
|
|
var sw = Stopwatch.StartNew(); |
|
Console.WriteLine("线程 {0}: {1}, 优先级: {2}", |
|
Thread.CurrentThread.ManagedThreadId, |
|
Thread.CurrentThread.ThreadState, |
|
Thread.CurrentThread.Priority); |
|
do |
|
{
|
|
Console.WriteLine("线程 {0}: 计时 {1:N2} 秒", |