C# 第八章『多线程』◆第2节:线程的属性

        一、Thread.Name 属性

        获取或设置线程的名称。

语法格式如下:
public string Name { get; set; }
using System;
using System.Threading;

class Test
{
    static void Main()
    {
        Thread Nt1 = new Thread(new ThreadStart(Work.DoWork));
        if (Thread.CurrentThread.Name == null)
        {
            Thread.CurrentThread.Name = "MainThread";
        }
        else
        {
            Console.WriteLine("Unable to name a previously " + "named thread.");
        }
        Nt1.Start();
    }
}

class Work
{
    public static void DoWork()
    {
        Console.WriteLine("新的线程启动(静态方法)");
    }
}

         二、Thread.CurrentThread 属性

        获取当前正在运行的线程。

public static System.Threading.Thread CurrentThread { get; }

        三、线程的优先级

        线程的优先级指定一个线程相对于另一个线程的相对优先级,每个线程都有一个分配的优先级。在公共语言运行库内创建的线程最初被分配为Normal优先级,而在公共语言运行库快创建的线程,在进入公共语言运行库时将保留其先前的优先级。

        线程是根据其优先级而调度执行的,用于确定线程执行顺序的调度算法随操作系统的不同而不同。只要具有较高优先级的线程可以执行,具有较低优先级的线程就不会执行,直到在高优先级的程序不再有可执行的线程时,才会移动到下一个较低的优先级,并在该优先级上调度线程以执行。除此之外,当应用程序的用户界面在前台和后台之间切换时,操作系统可以动态调整线程的优先级。

        线程的优先级可以通过Thread类的Priority属性设置,获取或设置指示线程的调度优先级的值。Priority属性是一个ThreadPriority型枚举,列举了5个优先等级:AboveNormal、BelowNormal、Highest、Lowest、Normal。

public System.Threading.ThreadPriority Priority { get; set; }

public ThreadPriority Priority{get;set;}

        普通线程的优先级默认为Normal;

  • Highest:在具有任何其他优先级的线程之前,优先级最高。
  • AboveNormal:可以将Thread安排在具有Highest优先级线程之后,在Normal之前。
  • Normal:在AboveNormal之后,BelowNormal之前。默认值
  • BelowNormal:在Normal之后,Lowest之前。
  • Lowest:优先级最低。

        可以通过调用线程的Priority属性来获取和设置其优先级。Priority属性用来获取或设置一个值,该值指示线程的调度优先级。

using System;
using System.Threading;

class Test
{
    static void Main()
    {
        Thread Nt1 = new Thread(new ThreadStart(Work.DoWork1));
        Nt1.Priority = ThreadPriority.Lowest;
        Nt1.Start();

        Thread Nt2 = new Thread(new ThreadStart(Work.DoWork2));
        Nt2.Priority = ThreadPriority.Highest; ;
        Nt2.Start();
    }
}

class Work
{
    public static void DoWork1()
    {
        Console.WriteLine("1111111111");
    }
    public static void DoWork2()
    {
        Console.WriteLine("2222222222");
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45336030/article/details/126493035