C# 前台线程与后台线程

由于时间片的原因,虽然所有线程在微观上是串行执行的,但在宏观上可以认为是并行执行。

线程有两种类型:前台和后台。我们可以通过线程属性IsBackground=false来指定线程的前后台属性(默认是前台线程)。

区别是:前台线程的程序,必须等所有的前台线程运行完毕后才能退出;而后台线程的程序,只要前台的线程都终止了,那么后台的线程就会自动结束并推出程序。

用法方向:一般前台线程用于需要长时间等待的任务,比如监听客户端的请求;后台线程一般用于处理时间较短的任务,比如处理客户端发过来的请求信息。

【前台线程】

[csharp]  view plain  copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Threading;  
  5.   
  6. namespace Demo  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             Thread aThread = new Thread(threadFunction);  
  13.             Console.WriteLine("Thread is starting...");  
  14.             aThread.Start();  
  15.             Console.WriteLine("Application is terminating...");  
  16.         }  
  17.   
  18.         public static void threadFunction()  
  19.         {  
  20.             Console.WriteLine("Thread is sleeping...");  
  21.             Thread.Sleep(5000);  
  22.             Console.WriteLine("Thread is aborted!");  
  23.         }  
  24.     }  
  25. }  


【后台线程】 

[csharp]  view plain  copy
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Threading;  
  5.   
  6. namespace Demo  
  7. {  
  8.     class Program  
  9.     {  
  10.         static void Main(string[] args)  
  11.         {  
  12.             Thread aThread = new Thread(threadFunction);  
  13.             aThread.IsBackground = true;  
  14.             Console.WriteLine("Thread is starting...");  
  15.             aThread.Start();  
  16.             Console.WriteLine("Application is terminating...");  
  17.         }  
  18.   
  19.         public static void threadFunction()  
  20.         {  
  21.             Console.WriteLine("Thread is sleeping...");  
  22.             Thread.Sleep(5000);  
  23.             Console.WriteLine("Thread is aborted!");  
  24.         }  
  25.     }  

猜你喜欢

转载自blog.csdn.net/feizxiang3/article/details/51689987