Friday, October 16, 2015

Thread Priorities, Groups and Methods of Thread Class

Thread Priorities:

Every Java thread has a priority that helps the operating system determine the order in which threads are scheduled.
Java priorities are in the range between MIN_PRIORITY (a constant of 1) and MAX_PRIORITY (a constant of 10). By default, every thread is given priority NORM_PRIORITY (a constant of 5).
Threads with higher priority are more important to a program and should be allocated processor time before lower-priority threads. However, thread priorities cannot guarantee the order in which threads execute and very much platform dependentant.

Thread Group:

A ThreadGroup is used to represent a group of Threads. A tree structure can be formed from ThreadsGroups containing other ThreadGroups & Threads. Threads can only access the ThreadGroup to which they belong. This means that access to a ThreadGroups parent or other ThreadGroup is not permitted. Once a ThreadGroup is created various information can be obtained such as the ThreadGroups name, how many threads are active, the maximum priority that can be contained within the group and a host of other information. 

Thread Methods:

Following is the list of important methods available in the Thread class.
SNMethods with Description
1public void start()
Starts the thread in a separate path of execution, then invokes the run() method on this Thread object.
2public void run()
If this Thread object was instantiated using a separate Runnable target, the run() method is invoked on that Runnable object.
3public final void setName(String name)
Changes the name of the Thread object. There is also a getName() method for retrieving the name.
4public final void setPriority(int priority)
Sets the priority of this Thread object. The possible values are between 1 and 10.
5public final void setDaemon(boolean on)
A parameter of true denotes this Thread as a daemon thread.
6public final void join(long millisec)
The current thread invokes this method on a second thread, causing the current thread to block until the second thread terminates or the specified number of milliseconds passes.
7public void interrupt()
Interrupts this thread, causing it to continue execution if it was blocked for any reason.
8public final boolean isAlive()
Returns true if the thread is alive, which is any time after the thread has been started but before it runs to completion.
The previous methods are invoked on a particular Thread object. The following methods in the Thread class are static. Invoking one of the static methods performs the operation on the currently running thread
SNMethods with Description
1public static void yield()
Causes the currently running thread to yield to any other threads of the same priority that are waiting to be scheduled
2public static void sleep(long millisec)
Causes the currently running thread to block for at least the specified number of milliseconds
3public static boolean holdsLock(Object x)
Returns true if the current thread holds the lock on the given Object.
4public static Thread currentThread()
Returns a reference to the currently running thread, which is the thread that invokes this method.
5public static void dumpStack()
Prints the stack trace for the currently running thread, which is useful when debugging a multithreaded application

No comments:

Post a Comment