日期:2014-05-20  浏览次数:20677 次

有关线程的问题
import   java.awt.*;
import   java.applet.*;
import   java.awt.event.*;

class   售票员{
int   五元钱的个数=2,十元钱的个数=0,二十元钱的个数=0;
String   s=null;
public   synchronized   void   售票规则(int   money){
if(money==5){
五元钱的个数=五元钱的个数+1;
s= "给您入场券   您的钱正好 ";
Sample19_8.text.append( "\n "+s);
}
else   if(money==20){
while(五元钱的个数 <3){
try{
wait();
}
catch(InterruptedException   e){
}
}
五元钱的个数=五元钱的个数-3;
二十元钱的个数=二十元钱的个数+1;
s= "给您入场券 "+ "   您给我20,找您15元 ";
Sample19_8.text.append( "\n "+s);
}
notifyAll();
}
}

public   class   Sample19_8   extends   Applet   implements   Runnable{
售票员   王小姐;
Thread   张平,李明;
static   TextArea   text;

public   void   init()   {
张平=new   Thread(this);
李明=new   Thread(this);
text=new   TextArea(10,30);
add(text);
王小姐=new   售票员();
}

public   void   start(){
张平.start();
李明.start();
}

public   void   run(){
if(Thread.currentThread()==张平){
王小姐.售票规则(20);
}
else   if(Thread.currentThread()==张平){
王小姐.售票规则(5);
}
}
}


书上的例题,书上说结果会出:
给您入场券   您的钱正好
给你入场券   您给我20,找您15元

但是我编译成功,却运行不出这个结果。

------解决方案--------------------
给您入场券 您的钱正好
给你入场券 您给我20,找您15元


这两句的顺序是可以变的。因为同步之后,不一定先执行哪个线程。
------解决方案--------------------
你得出的什么结果?