The Java Program: Yield.java

  1 // Yield.java
  2 
  3 class Yield implements Runnable {
  4    private Thread t = new Thread (this);
  5    private int maxcount;
  6  
  7    Yield (int p, int c) {
  8       maxcount = c;
  9       t.setPriority (p);
 10       t.setName ("A thread at priority " + p + " and count " + c);
 11       t.start();   // construct and go!
 12    }
 13 
 14    public void run() {
 15       // This task voluntarily yields the processor.
 16       System.out.println ("BEGIN! " + t.getName());
 17       for (int i = 1; i <= maxcount; i++) {
 18          System.out.println (i + ". " + t.getName());
 19          Thread.yield();
 20       }
 21       System.out.println ("DONE!  " + t.getName());
 22    }
 23 
 24    public static void main (String args[]) throws InterruptedException {
 25       final Thread m = Thread.currentThread();
 26       m.setPriority (Thread.MAX_PRIORITY);
 27       final int p = m.getPriority();
 28       System.out.println ("Begining main (priority=" + p + ")");
 29       Yield [] handle = new Yield [args.length/2];
 30       for (int i=0; i<args.length; i+=2) {
 31          final int y = Integer.parseInt (args[i]);
 32          final int c = Integer.parseInt (args[i+1]);
 33          handle[i/2] = new Yield (y, c);
 34       }
 35       System.out.println ("The end of main.");
 36    }
 37 
 38 }