请教多线程的问题,麻烦哪位高手帮忙,谢谢
不知为什么,在一个noify里面会卡住,请各位帮帮忙,谢谢
class test{
java.util.Random r = new java.util.Random();
老板 老板a = new 老板();
员工 员工a = new 员工();
老婆 老婆a = new 老婆();
妹妹 妹妹a = new 妹妹();
孙女 孙女a = new 孙女();
class 没有资料 extends Exception{}
class 怀孕 extends Exception{}
class 有事 extends Exception{}
class 不用学习 extends Exception{}
class 跟孙女玩 extends Exception{}
class 人物 extends Thread{
资料 资料a = null;
String 状态 = null;
public void 得到资料(资料 资料a){
this.资料a = 资料a;
}
public void 失去资料(){
this.资料a = null;
}
public void 递资料(人物 人物a){
System.out.println(人物a+ "拿到资料 ");
失去资料();
人物a.得到资料(资料a);
}
public void 通知(人物 人物a,String 状态){
try{
this.sleep(r.nextInt(300));
}catch(Exception e){}
人物a.改变状态(状态);
synchronized(人物a){
人物a.notify();
}
}
public void 改变状态(String 状态){
this.状态 = 状态;
}
}
class 资料{
public String toString(){
return "资料上面写着:不得随地大小便! ";
}
}
class 老板 extends 人物{
public 老板(){
状态 = "工作 ";
start();
}
public void run(){
while(true){
try{
synchronized(this){
wait();
}
}catch(Exception e){}
if(状态.equals( "工作 "))
看资料();
else
玩();
}
}
public void 看资料(){
try{
if(资料a==null) throw new 没有资料();
System.out.println( "老板正在看资料....\n "+资料a);
System.exit(0);
}catch(没有资料 e){
通知(员工a, "上交资料 ");
}
}
public void 玩(){
System.out.println( "老板要玩 ");
if(资料a!=null){
递资料(员工a);
}
//System.out.println(员工a);
通知(员工a, "取消上交资料 ");//就是这里卡住了
}
public String toString(){
return "老板 ";
}
}
class 员工 extends 人物{
public 员工(){
start();
}
public void run(){
while(true){
try{
synchronized(this){
wait(100);
}
}catch(Exception e){}
if(状态.equals( "上交资料 "))
上交资料();
else
取消上交资料();
}
}
public void 上交资料(){
try{
if(资料a==null) throw new 没有资料();
递资料(老板a);
synchronized(老板a){
老板a.notify();
}
}catch(没有资料 e){
通知(老婆a, "送资料 ");
上交资料();
}
}
public void 取消上交资料(){
if(资料a!=null){
递资料(妹妹a);
}
通知(老婆a, "取消送资料 ");
}
public String toString(){
return "员工 ";
}
}
class 老婆 extends 人物{
public 老婆(){
资料a = new 资料();
start();
}
public void run(){