代码如下:
public class PriorityTest {
static int No_OF_THREADS=4;
static boolean yield=true;
static int [] counter=new int [No_OF_THREADS];
public static void main (String [] args){
int no_of_intervals=10;
if(args.length>0)
yield=false;
System.out.println("Using yield()?"+(yield?"YES":"NO"));
for(int i=0;i
new PrTestThread((i>1)?4:(i+2),i).start();
ThreadInfo.printAllThreadInfo();
System.out.println();
while(true){
try{
Thread.sleep(600);
}catch(InterruptedException e){}
System.out.print("Step"+i+":COUNTERS:");
for(int j=0;j<No_OF_THREADS;j++){
System.out.print(" "+counter[j]);
if(counter[j]<6000000)
all_done=false;
}
System.out.println();
if(all_done)
break;
}
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<6000001;i++){
if(((i%30000)==0)&&PriorityTest.yield)
yield();
PriorityTest.counter[id]=i;
}
}
}
编译过程中,Eclipse报错,all_done没有定义,以及”System.out.print("Step"+i+":COUNTERS:");“语句中i没有定义。我想可能是书中漏了什么语句,就在“System.out.print("Step"+i+":COUNTERS:");”语句中加了一个for循环 for(int j=0;j<No_OF_THREADS;j++) ,并且在循环中定义了all_done,这时,程序可以运行了,运行结果如下:
但书中给出的结果是:
我感觉应该是我改错了。
请教大神。