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();
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 }