The Java Program: Except.java

  1 class Except implements Runnable {
  2 
  3    private final Thread t = new Thread (this);
  4    private final int maxcount;
  5  
  6    Except (final int p, final int c) {
  7       maxcount = c;
  8       t.setPriority (p);
  9       t.setName ("A thread at priority " + p + " and count " + c);
 10       t.setDefaultUncaughtExceptionHandler (defaultHandler);
 11       t.start();   // construct and go!
 12    }
 13 
 14    public void run() {
 15       System.out.println ("BEGIN! " + t.getName());
 16       for (int i = 1; i <= maxcount; i++) {
 17          System.out.println (i + ". " + t.getName());
 18       }
 19       throw new RuntimeException ("DONE!  " + t.getName());
 20    }
 21 
 22    public static void main (String args[]) {
 23       final int p = Thread.currentThread().getPriority();
 24       System.out.println ("Begining main (priority=" + p + ")");
 25       final Except [] handle = new Except [args.length/2];
 26       for (int i=0; i<args.length; i+=2) {
 27          final int y = Integer.parseInt (args[i]);
 28          final int c = Integer.parseInt (args[i+1]);
 29          handle[i/2] = new Except (y, c);
 30       }
 31       System.out.println ("The end of main.");
 32    }
 33 
 34    final static class Handler implements Thread.UncaughtExceptionHandler {
 35       public void uncaughtException (Thread t, Throwable e) {
 36          System.out.format ("Uncaught thread exception %s%n", e);
 37       }
 38    }
 39 
 40    final private static Thread.UncaughtExceptionHandler defaultHandler =
 41       new Handler ();
 42 
 43 }