想问下这个程序怎么执行的,它为什么会有不止一种结果啊?

[复制链接]
查看11 | 回复1 | 2010-12-27 13:44:56 | 显示全部楼层 |阅读模式
public class P2_4
{

public static void main(String args[ ])

{

Bank bank=new Bank();

bank.setMoney(60);


bank.zhang.start();

bank.cheng.start();

}
}
class Bank implements Runnable
{

private int money=0;

Thread zhang,cheng;

Bank()

{

zhang=new Thread(this);

zhang.setName("会计");

cheng=new Thread(this);

cheng.setName("出纳");

}

public void setMoney(int mount)

{

money=mount;

}
public void run()

{

while(true)

{

money=money-20;

if(Thread.currentThread()==zhang)

{

System.out.println("我是"+zhang.getName()+",现在有"+money+"元");

if(money<=40)

return;


}

else if(Thread.currentThread()==cheng)

{

System.out.println("我是"+cheng.getName()+",现在有"+money+"元");

if(money<=0)

return;


}

try{

Thread.sleep(800);

}

catch(InterruptedException e)

{

}

}

}
}

回复

使用道具 举报

千问 | 2010-12-27 13:44:56 | 显示全部楼层
线程的使用问题,线程的睡眠与唤醒,不同的线程被唤醒,那么输出的结果也就不一样喽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行