SimplePriority.java





import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import com.bruceeckel.swing.*;
import com.bruceeckel.util.*;

public class SimplePriority extends JApplet {
  JTextArea  Xout  = new JTextArea(10, 30);
  public void init() {
    Container cp = getContentPane();
    cp.setLayout(new FlowLayout());
    cp.add(new JLabel("SimplePriority!"));
    cp.add(new JScrollPane(Xout));
    int i;
    for(i = 0; i < 5; i++)
      new XSimplePriorities(i, Thread.MIN_PRIORITY);
    i = 555 ;
    new XSimplePriorities(i, Thread.MAX_PRIORITY);
  }
  public class XSimplePriorities extends Thread {
    private int countDown = 3;
    private volatile double d = 0; // No optimization
    private int TID;
    public XSimplePriorities(int ID, int priority) {
      TID = ID;
      setPriority(priority);
      start();
    }

    public void run() {
      while(true) {
        // An expensive, interruptable operation:
        for(int i = 1; i < 1000000; i++)
          d = d + (Math.PI + Math.E) / (double)i;
        Xout.append("Thread " + TID + ", Priority " + getPriority() + ": " + countDown + "\n");
        if(--countDown == 0) return;
      }
    }
  }
  public static void main(String[] args) {
        Console.run(new SimplePriority(), 600, 400);
  }
}