多线程学习系列:(二)线程基本知识

来源:互联网 发布:php团购代码逻辑 编辑:程序博客网 时间:2024/06/05 04:26

首先来看看如何创建线程:

Console.WriteLine(Process.GetCurrentProcess().Threads.Count); 
Thread t1 = new Thread(() => 
  { 
    Thread.Sleep(1000); 
    Thread t = Thread.CurrentThread; 
    Console.WriteLine("Name: " + t.Name); 
    Console.WriteLine("ManagedThreadId: " + t.ManagedThreadId); 
    Console.WriteLine("State: " + t.ThreadState); 
    Console.WriteLine("Priority: " + t.Priority); 
    Console.WriteLine("IsBackground: " + t.IsBackground); 
    Console.WriteLine("IsThreadPoolThread: " + t.IsThreadPoolThread); 
  }) 
  { 
    Name = "Thread1", 
    Priority = ThreadPriority.Highest 
  }; 
t1.Start(); 
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);

  我们在Thread的构造方法中传入一个Lambda表达式,对应ThreadStart委托(无参void返回值的方法)来构造一个线程任务。这段程序中有几个注意点:

  1)从输出结果中可以看到,当前程序启动后就3三个线程,新开线程后显示为4个线程,在线程方法中休眠了一秒,防止主线程执行完次线程就过早结束了。

  2)我们可以为线程设置一个名字,方便调试。我们也可以设置线程的优先级,这个在之后会有进一步介绍。

  3)第7行,托管线程的唯一标识符,微软建议使用托管线程的Id而不是操作系统中线程的Id来跟踪线程。