import java.io.*; public class PriorityTest { static int NUM_T = 4; static boolean yield = true; static int[] counter =new int[NUM_T]; public static void main(String[] args) { PrintWriter out = new PrintWriter(System.out, true); int numIntervals = 10; if(args.length > 0) { yield = false; } out.println("Using yield() ? " + (yield ? "Yes " : "No ")); for (int i = 0; i<NUM_T; i++) { (new prTestThread ((i > 1) ? 4 : (i + 1), i)).start(); } ThreadInfo.printAllThreadInfo(); out.println(); int step = 0; while (true ) { boolean allDone = true; try { Thread.sleep (300); }catch(InterruptedException e) {} out.print("Step " + (step ++) + ": COUNTERS:"); for(int j = 0; j<NUM_T; j++) { out.print( " " + counter[j]); if (counter[j] < 2000000) { allDone = false; } } System.exit(0); } } } class prTestThread extends Thread { int id; prTestThread (int priority, int id) { super("prTestThread #" + id); this.id = id; setPriority(priority); } public void run() { for(int i = 0; i <= 2000000; i++) { if(((i % 3000) == 0) && PriorityTest.yield) { yield(); } PriorityTest.counter[id] = i; } } }