C# Thread Priority in Multithreading Last Updated : 28 Jan, 2025 Comments Improve Suggest changes Like Article Like Report In a multithreaded environment, each thread has a priority that determines how frequently the thread is allocated CPU resources by the operating system. The Thread.Priority property in C# is used to set or get the priority of a thread.A programmer can explicitly assign a priority to a thread using the Priority property.By default, a thread's priority is set to Normal.The operating system handles thread scheduling, but priorities influence how threads are executed.Setting priorities incorrectly can lead to thread starvation, where lower-priority threads may not get enough CPU time.A high-priority thread does not guarantee that it will execute before a low-priority thread because of context switching and other OS-level scheduling mechanisms.The thread priority always depends on the process priority (the parent container).Thread Priority LevelsThe ThreadPriority enum under the System.Threading namespace specifies the following priority levels:Priority LevelDescriptionValueHighestHighest priority for a thread.4AboveNormalHigher than Normal priority.3Normal (Default)Default priority.2BelowNormalLower than Normal priority.1LowestLowest priority for a thread.0Syntax:public ThreadPriority Priority{ get; set; }Exceptions:ThreadStateException: If the thread has reached a final state, such as Aborted.ArgumentException: If the value specified for a set operation is not a valid ThreadPriority value.Example 1: This example demonstrates how to set and get the priority of threads. C# // C# program to illustrate how to // set and get the priority of threads using System; using System.Threading; class Geeks { static public void Main() { // Creating and initializing threads Thread T1 = new Thread(work); Thread T2 = new Thread(work); Thread T3 = new Thread(work); // Set the priority of threads T2.Priority = ThreadPriority.Highest; T3.Priority = ThreadPriority.BelowNormal; T1.Start(); T2.Start(); T3.Start(); // Display the priority of threads Console.WriteLine("The priority of T1 is: {0}", T1.Priority); Console.WriteLine("The priority of T2 is: {0}", T2.Priority); Console.WriteLine("The priority of T3 is: {0}", T3.Priority); } public static void work() { // Sleep for 100 milliseconds Thread.Sleep(100); } } OutputThe priority of T1 is: Normal The priority of T2 is: Highest The priority of T3 is: BelowNormal Example 2: This example demonstrates how thread priority can influence thread execution. C# // C# program to illustrate the // Priority property of Thread class using System; using System.Threading; class Geeks { static public void Main() { // Creating and initializing threads Thread T1 = new Thread(work1); Thread T2 = new Thread(work2); // Set the priority of threads // Here T2 thread executes first // because the Priority of T2 is // highest as compare to T1 thread T1.Priority = ThreadPriority.Lowest; T2.Priority = ThreadPriority.Highest; T1.Start(); T2.Start(); } public static void work1() { Console.WriteLine("T1 thread is working.."); } public static void work2() { Console.WriteLine("T2 thread is working.."); } } OutputT1 thread is working.. T2 thread is working.. Comment More infoAdvertise with us Next Article C# Thread Priority in Multithreading A ankita_saini Follow Improve Article Tags : C# CSharp Multithreading CSharp Thread Class Similar Reads Thread.CurrentThread Property in C# A Thread class is responsible for creating and managing a thread in multi-thread programming. It provides a property known as CurrentThread to check the current running thread. Or in other words, the value of this property indicates the current running thread. Syntax: public static Thread CurrentThr 2 min read C# Multithreading C# is a multi-paradigm programming language that supports several programming styles, including procedural, object-oriented, and functional programming. One of the essential features of C# is its support for multithreading, which enables developers to write applications that can perform multiple tas 9 min read C# Main Thread In C#, threads are the smallest units of execution that allow parallel execution of code, enabling multiple tasks to run concurrently within a single process. The Thread class in the System.Threading namespace is used to create and manage threads. In C#, the Main method is the entry point of any con 5 min read How to Thread Lock Work in C#? C# makes the concurrent execution of a code possible with the help of threads. The namespace System. Threading which is pre-built in C# supports the use of threads. Typically we create threads for the concurrent execution of a program. But in certain cases we may not want our program to be run concu 4 min read C# Types of Threads Multithreading is one of the core features in C# that allows multiple tasks to be performed concurrently. Threads allow your application to run multiple tasks simultaneously, improving performance, and resource utilization. In C#, there are two types of threads.Foreground ThreadsBackground ThreadsNo 4 min read Like