Title: Change a thread's priority.
Course: Java Programming (Oracle) (10055) > Section: Understanding Multithreaded Programming Support

Changing a thread’s priorities should include

- calling setPriority( ) (i.e., final void setPriority(int level)
- designating level (must be within the range MIN_PRIORITY and MAX_PRIORITY)
- returning to default priority by specifying NORM_PRIORITY
- obtaining the Current Priority Setting by Calling getPriority( ).

Code to change the priority should include the following:

class Priority implements Runnable {

int count;
Thread thrd;

static boolean stop = false;
static String currentName;

/* Construct a new thread. Notice that this
constructor does not actually start the
threads running. */
Priority(String name) {
thrd = new Thread(this, name);
count = 0;
currentName = name;
}

// Begin execution of new thread.
public void run() {
System.out.println(thrd.getName() + " starting.");
do {
count++;

if(currentName != thrd.getName()) {
currentName = thrd.getName();
System.out.println("In " + currentName);
}

} while(stop == false && count < 1000);
stop = true;

System.out.println("\n" + thrd.getName() +
" terminating.");
}
}

class PriorityDemo {
public static void main(String args[]) {
Priority mt1 = new Priority("High Priority");
Priority mt2 = new Priority("Low Priority");

// set the priorities
mt1.thrd.setPriority(Thread.NORM_PRIORITY+2);
mt2.thrd.setPriority(Thread.NORM_PRIORITY-2);
// start the threads
mt1.thrd.start();
mt2.thrd.start();

try {
mt1.thrd.join();
mt2.thrd.join();
}
catch(InterruptedException exc) {
System.out.println("Main thread interrupted.");
}

System.out.println("\nHigh priority thread counted to " +
mt1.count);
System.out.println("Low priority thread counted to " +
mt2.count);
}
}