1. Introduction
In this article, We will understand one of two characteristics of Threads because those two are crucial for better analysis and debugging the issues. Here are the key factors of threads are Priority ad its State.
We have already explained how to create a thread using the Thread class and Runnable interface.
Remember, To run a java program one thread is required. When you are executing a program JVM will create a thread called Main thread that is the only thread created in normal and concurrent applications.
In java, Threads share all the resources of the application, including memory and open files. This is a powerful tool because they can share information in a fast and easy way but need to avoid race conditions using proper synchronization.
2. Thread Priority
In Java, All threads have their own default priority when a thread is created. Thread priority is an integer value that can be between 0 and 10. Thread class has provided with 3 predefined priority constants such as MAX_PRIORITY(10), MIN_PRIORITY(1) and NORM_PRIORITY(5). All are defined as static in Thread class and can be invoked directly with the class name. All threads are created with default Thread.NORM_PRIORITY. But this can be changed using the setPriority(int value) method and getPriority() is to retrieve the current thread priority.
package com.java.w3schools.blog.java.program.to.threads;
public class ThreadPriorityExample {
public static void main(String[] args) {
// Getting the current executing thread.
Thread thread = Thread.currentThread();
System.out.println("Current thread name: " + thread.getName());
int maxPriority = Thread.MAX_PRIORITY;
int minPriority = Thread.MIN_PRIORITY;
int normPriority = Thread.NORM_PRIORITY;
System.out.println("Thread max priority : " + maxPriority);
System.out.println("Thread min priority : " + minPriority);
System.out.println("Thread norm priority : " + normPriority);
// default thread priority
System.out.println("Current thread priority : " + thread.getPriority());
// new thread
Thread thread2 = new Thread();
// default thread priority
System.out.println("New thread" + " priority : " + thread2.getPriority());
// changing the priority
thread.setPriority(1);
thread2.setPriority(2);
System.out.println("After change Current thread priority : " + thread.getPriority());
System.out.println("After change New thread" + " priority : " + thread2.getPriority());
}
}
Output:
Current thread name: main
Thread max priority : 10
Thread min priority : 1
Thread norm priority : 5
Current thread priority : 5
New thread priority : 5
After change Current thread priority : 1
After change New thread priority : 2
Normally, threads created with higher priority will be executed before lower-priority threads. As we told, thread priority can be changed with the setPriority() method but this is not a serious contract between JVM and underlying operating system to make it execute first. These two are just hints to JVM and OS, but no guarantee on these.
3. Child Threads Priority
Child threads will get the priority from its parent thread.
package com.java.w3schools.blog.java.program.to.threads;
public class ThreadPriorityChildThreads {
public static void main(String[] args) {
// Getting the current executing thread.
Thread thread = Thread.currentThread();
System.out.println("Current thread name: " + thread.getName());
thread.setPriority(7);
System.out.println("main thread priority : " + thread.getPriority());
Thread child = new Thread();
System.out.println("Child thread 1 priority : " + child.getPriority());
Thread child2 = new Thread();
System.out.println("Child thread 2 priority : " + child2.getPriority());
}
}
Output:
Current thread name: main
main thread priority : 7
Child thread 1 priority : 7
Child thread 2 priority : 7
4. Conclusion
In this article, We have seen What is Thread Priority? What is the default thread priority? How to change the priority? What is the priority of child threads?
Next, Article on the Thread States.
0 Comments