这是源代码:
public class Number implements Runnable {
final int SMALLER=-1,LARGER=1,SUCCESS=8,count1=0,count2=0;
int realNumber,guessNumber,min=0,max=100,message=SMALLER;
boolean pleaseGuess=false,isGiveNumber=false;
Thread giveNumberThread,guessNumberThread1,guessNumberThread2;
Number(){
giveNumberThread=new Thread(this);
guessNumberThread1=new Thread(this);
guessNumberThread2=new Thread(this);}
public void run(){
for(int i=1;true;i++)
setMessage(i);
if(message==SUCCESS)
return;}}
public synchronized void setMessage(int count){
if(Thread.currentThread()==giveNumberThread&&isGiveNumber==false) {
realNumber=(int)(Math.random()*100)+1;
System.out.println("随机给你一个1至100之间的数,猜猜是多少?");
isGiveNumber=true;
pleaseGuess=true;
}
else if(Thread.currentThread()==giveNumberThread){
while(pleaseGuess==true)
try{
wait();
}
catch(InterruptedException e){}
if(realNumber>guessNumber) {
message=SMALLER;
System.out.println("你猜小了");
}
else if(realNumber<guessNumber) {
message=LARGER;
System.out.println("你猜大了");
}
else{
message=SUCCESS;
System.out.println("恭喜,你猜对了");
}
pleaseGuess=true;
}
else if(Thread.currentThread()==guessNumberThread1&&isGiveNumber==true){
while(pleaseGuess==false)
try{
wait();}
catch(InterruptedException e){}
count1++;
if(message==SMALLER) {
min=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count1+"次猜这个数:"+guessNumber);}
else if(message==LARGER) {
max=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count1+"次猜这个数:"+guessNumber);}
else if(message==LARGER) {
max=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count1+"次猜这个数:"+guessNumber);}
pleaseGuess=false;}
if(Thread.currentThread()==guessNumberThread2&&isGiveNumber==true){
while(pleaseGuess==false)
try{
wait();}
catch(InterruptedException e){}
count2++;
if(message==SMALLER) {
min=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count2+"次猜这个数:"+guessNumber);}
else if(message==LARGER) {
max=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count2+"次猜这个数:"+guessNumber);}
else if(message==LARGER) {
max=guessNumber;
guessNumber=(min+max)/2;
System.out.println("我第"+count2+"次猜这个数:"+guessNumber);}
pleaseGuess=false;}
notifyAll();
}}
编译结果: 需要为 class、interface 或 enum
刚学线程,只有一个线程猜的话就可以,我加了一个,就不行了。求教。