In a Multi threading environment, thread scheduler assigns processor to a thread based on priority of thread. Whenever we create a thread in Java, it always has some priority assigned to it. Priority can either be given by JVM while creating the thread or it can be given by programmer explicitly.
Accepted value of priority for a thread is in range of 1 to 10. There are 3 static variables defined in Thread class for priority.
public static int MIN_PRIORITY: This is minimum priority that a thread can have. Value for this is 1.
public static int NORM_PRIORITY: This is default priority of a thread if do not explicitly define it. Value for this is 5.
public static int MAX_PRIORITY: This is maximum priority of a thread. Value for this is 10.
Get and Set Thread Priority:
- public final int getPriority(): java.lang.Thread.getPriority() method returns priority of given thread.
- public final void setPriority(int newPriority): java.lang.Thread.setPriority() method changes the priority of thread to the value newPriority. This method throws IllegalArgumentException if value of parameter newPriority goes beyond minimum(1) and maximum(10) limit.
Examples of getPriority() and set
Output: t1 thread priority : 5 t2 thread priority : 5 t3 thread priority : 5 t1 thread priority : 2 t2 thread priority : 5 t3 thread priority : 8 Main thread priority : 5 Main thread priority : 10
- Thread with highest priority will get execution chance prior to other threads. Suppose there are 3 threads t1, t2 and t3 with priorities 4, 6 and 1. So, thread t2 will execute first based on maximum priority 6 after that t1 will execute and then t3.
- Default priority for main thread is always 5, it can be changed later. Default priority for all other threads depends on the priority of parent thread.
// Java program to demonstrat ethat a child thread
// gets same priority as parent
"Inside run method"
// main thread priority is 6 now
"main thread priority : "
ThreadDemo t1 =
// t1 thread is child of main thread
// so t1 thread will also have priority 6.
"t1 thread priority : "
Output: Main thread priority : 6 t1 thread priority : 6
- If two threads have same priority then we can’t expect which thread will execute first. It depends on thread scheduler’s algorithm(Round-Robin, First Come First Serve, etc)
- If we are using thread priority for thread scheduling then we should always keep in mind that underlying platform should provide support for scheduling based on thread priority.
This article is contributed by Dharmesh Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Naming a thread and fetching name of current thread in Java
- Difference between Thread.start() and Thread.run() in Java
- How a thread can interrupt an another thread in Java?
- Multithreading in Java
- Deadlock in Java Multithreading
- What does start() function do in multithreading in Java?
- Java.lang.Thread class in Java
- Thread Pools in Java
- Daemon thread in Java
- Main thread in Java
- Lifecycle and States of a Thread in Java
- Thread UncaughtExceptionHandler in Java with Examples
- Inter-thread Communication in Java
- Implement Runnable vs Extend Thread in Java
- Lock framework vs Thread synchronization in Java
- Thread Interference and Memory Consistency Errors in Java
- isAlive() and join() methods of Thread Class in Java
- Priority CPU Scheduling with different arrival time - Set 2
- Overloading of Thread class run() method
- Minimum Spanning Tree using Priority Queue and Array List