zoukankan      html  css  js  c++  java
  • ThreadPriority

    ThreadPriority

    一、简介

    如果在应用程序中有多个线程在运行,但一些线程比另一些线程重要,这种情况下可以在一个进程中为不同的线程指定不同的优先级。线程的优先级可以通过Thread类Priority属性设置,Priority属性是一个ThreadPriority型枚举,列举了5个优先等级:AboveNormal、BelowNormal、Highest、Lowest、Normal。公共语言运行库默认是Normal类型的。

    二、代码

       class Program
        {
            static void Main(string[] args)
            {
                Thread threadA = new Thread(ThreadMethod); //执行的必须是无返回值的方法 
                threadA.Name = "A";
                Thread threadB = new Thread(ThreadMethod);
                threadB.Name = "B";
                threadA.Priority = ThreadPriority.Highest;
                threadB.Priority = ThreadPriority.BelowNormal;
                threadB.Start();
                threadA.Start();
                Thread.CurrentThread.Name = "C";//默認為Normal
                ThreadMethod(new object());
                Console.ReadKey();
            }
            public static void ThreadMethod(object parameter)
            {
                for (int i = 1; i <= 500; i++)
                {
                    Console.Write(Thread.CurrentThread.Name);
                }
            }
        }

    三、运行结果

    上面的代码中有三个线程,threadA,threadB和主线程,threadA优先级最高,threadB优先级最低。这一点从运行结果中也可以看出,线程B偶尔会出现在主线程和线程A前面。当有多个线程同时处于可执行状态,系统优先执行优先级较高的线程,但这只意味着优先级较高的线程占有更多的CPU时间,并不意味着一定要先执行完优先级较高的线程,才会执行优先级较低的线程。

    优先级越高表示CPU分配给该线程的时间片越多,执行时间就多
    优先级越低表示CPU分配给该线程的时间片越少,执行时间就少


    技术的发展日新月异,随着时间推移,无法保证本博客所有内容的正确性。如有误导,请大家见谅,欢迎评论区指正!
    我创建了一个.NET开发交流群,用于分享学习心得和讨论相关技术难题。欢迎有兴趣的小伙伴扫码入群,相互学习!

  • 相关阅读:
    计算机的基本存储单位
    挖坑
    HEOI2017 游记
    bzoj4815 [Cqoi2017]小Q的表格
    bzoj4817 [Sdoi2017]树点涂色
    hdu5824 graph
    4.5&4.7联考题解
    高飞
    无题
    51Nod 算法马拉松23 开黑记
  • 原文地址:https://www.cnblogs.com/wml-it/p/14821589.html
Copyright © 2011-2022 走看看