What are the different types of Thread Priorities in Java? And what is the default priority of a thread assigned by JVM?
In Java, thread priorities are used to indicate the relative importance of threads to the thread scheduler. The Java Virtual Machine (JVM) allows you to set the priority of a thread using the setPriority(int priority)
method of the Thread
class. Thread priorities are represented by integer values, and they can range from Thread.MIN_PRIORITY
to Thread.MAX_PRIORITY
.
Here are the different types of thread priorities in Java:
MIN_PRIORITY: This is the lowest priority a thread can have. It is represented by the constant value 1
.
public static final int MIN_PRIORITY = 1;
NORM_PRIORITY: This is the default priority assigned to a thread if no priority is explicitly set. It is represented by the constant value 5
.
public static final int NORM_PRIORITY = 5;
MAX_PRIORITY: This is the highest priority a thread can have. It is represented by the constant value 10
.
public static final int MAX_PRIORITY = 10;
The default priority of a thread assigned by the JVM is NORM_PRIORITY
, which has a value of 5
. If you create a new thread without specifying a priority, it will automatically be assigned this default value.
Here is a simple example of how to set thread priorities in Java:
public class ThreadPriorityExample {
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
System.out.println("Thread 1 is running");
});
Thread thread2 = new Thread(() -> {
System.out.println("Thread 2 is running");
});
// Set priorities
thread1.setPriority(Thread.MIN_PRIORITY); // Set to lowest priority
thread2.setPriority(Thread.MAX_PRIORITY); // Set to highest priority
// Start threads
thread1.start();
thread2.start();
}
}
It's important to note that thread priority is a hint to the thread scheduler, and the actual behavior can vary between different JVM implementations and operating systems. Therefore, relying solely on thread priorities for critical application behavior is not recommended.