一. Thread及其五大方法

   Thread是.Net最早的多线程处理方式,它出现在.Net1.0时代,虽然现在已逐渐被微软所抛弃,微软强烈推荐使用Task(后面章节介绍),但从多线程完整性的角度上来说,我们有必要了解下N年前多线程的是怎么处理的,以便体会.Net体系中多线程处理方式的进化。

  Thread中有五大方法,分别是:Start、Suspend、Resume、Intterupt、Abort

  ①.Start:开启线程

  ②.Suspend:暂停线程

  ③.Resume:恢复暂停的线程

  ④.Intterupt:中断线程(会抛异常,提示线程中断)

  ⑤.Abort:销毁线程

    这五大方法使用起来,也比较简单,下面贴一段代码,体会一下如何使用即可。

 第二节:深入剖析Thread的五大方法、数据槽、内存栅栏。

  在这里补充一下,在该系列中,很多测试代码中看到TestThread0、TestThread、TestThread2,分别对应无参、一个参数、两个参数的耗时方法,代码如下:

 1   /// <summary>
 2         /// 执行动作:耗时而已
 3         /// </summary>
 4         private void TestThread0()
 5         {
 6             Console.WriteLine("线程开始:当前线程的id为:{0},当前时间为:{1},", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
 7             long sum = 0;
 8             for (int i = 1; i < 999999999; i++)
 9             {
10                 sum += i;
11             }
12             Console.WriteLine("线程结束:当前线程的id为::{0},当前时间为:{1}", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
13         }
14 
15         /// <summary>
16         /// 执行动作:耗时而已
17         /// </summary>
18         private void TestThread(string threadName)
19         {
20             Console.WriteLine("线程开始:线程名为:{2},当前线程的id为:{0},当前时间为:{1},", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), threadName);
21             long sum = 0;
22             for (int i = 1; i < 999999999; i++)
23             {
24                 sum += i;
25             }
26             Console.WriteLine("线程结束:线程名为:{2},当前线程的id为::{0},当前时间为:{1}", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), threadName);
27         }
28 
29         /// <summary>
30         /// 执行动作:耗时而已
31         /// </summary>
32         private void TestThread2(string threadName1, string threadName2)
33         {
34             Console.WriteLine("线程开始:线程名为:{2}和{3},当前线程的id为:{0},当前时间为:{1},", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), threadName1, threadName2);
35             long sum = 0;
36             for (int i = 1; i < 999999999; i++)
37             {
38                 sum += i;
39             }
40             Console.WriteLine("线程结束:线程名为:{2}和{3},当前线程的id为::{0},当前时间为:{1}", System.Threading.Thread.CurrentThread.ManagedThreadId, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"), threadName1, threadName2);
41         }
View Code

相关文章:

  • 2021-05-26
  • 2021-10-19
  • 2022-12-23
  • 2021-05-31
  • 2021-05-19
  • 2021-05-25
  • 2021-10-09
  • 2021-09-28
猜你喜欢
  • 2021-08-27
  • 2021-06-03
  • 2022-03-05
  • 2021-07-16
  • 2021-05-21
  • 2021-12-06
相关资源
相似解决方案