谷梁城! 2016-06-26 12:07 采纳率: 50%
浏览 1085

Java中关于线程的一个问题

代码如下:
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,这时,程序可以运行了,运行结果如下:图片说明
但书中给出的结果是:图片说明
我感觉应该是我改错了。
请教大神。

  • 写回答

1条回答 默认 最新

  • havedream_one 2016-06-26 13:05
    关注

    for(int i=0;i new PrTestThread((i>1)?4:(i+2),i).start();没看懂你这句话,建议再看看书,是否抄错了,再者是线程的执行有随机性,所以注意自己分析下

    评论

报告相同问题?

悬赏问题

  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了
  • ¥20 已知坐标,换成MATLAB可以用的数据
  • ¥50 写segy数据text时出错
  • ¥15 这个python五子棋代码的每一句意思是什么啊
  • ¥15 求一段隐藏代码,隐藏一些内容
  • ¥15 汇川EASY521plc电子凸轮
  • ¥15 C++ 如何判断设置快捷键来实现隐藏/显示窗口
  • ¥15 关于#材料工程#的问题:有没有具有电子阻挡层和空穴阻挡层的电池仿真silvaco代码例子或者其他器件具有阻挡层例子的silvaco代码(最好还有相关文献)
  • ¥60 基于MATLAB的TAOD算法