永发信息网

如何用Java线程实现银行的存款取款问题最好能写出编出的具体程序

答案:2  悬赏:20  手机版
解决时间 2021-02-06 05:29
  • 提问者网友:自食苦果
  • 2021-02-05 23:17
如何用Java线程实现银行的存款取款问题最好能写出编出的具体程序
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-02-05 23:39
这是一个经典的算法啊,叫生产者与消费者算法.
网上很多这种例子的..
全部回答
  • 1楼网友:你可爱的野爹
  • 2021-02-06 00:59

accounttest.java

class bankaccount //定义银行账户类bankaccount

{

private static int amount =2000; //账户余额最初为2000

public void despoit(int m) //定义存款的方法

{

amount=amount+m;

system.out.println("晓明存入["+m+"元]");

}

public void withdraw(int m) //定义取款的方法

{

amount=amount-m;

system.out.println("张新取走["+m+"元]");

if(amount<0)

system.out.println("***余额不足!***);

public int balance() //定义得到账户余额的方法

{

return amount;

}

}

classiccustomerextendsthread {

string name;

bankaccount bs; //定义一个具体的账户对象

public customer(bankaccount b,string s)

{

name=s;

bs=b;

}

public static void cus(string name,bankaccount bs) //具体的账户操作方法

{

if(name.equals("小明")) //判断用户是不是小明

{

try

{

for(int i=0;i<6;i++) //用户晓明则向银行存款6次,每次1000元 {

thread.currentthread().sleep((int)(math.random()*300));

bs.despoit(1000);

}

}

catch(interruptedexception e)

{}

}

else

{

try

{

for(int i=0;i<6;i++) //用户不是小明则从银行取款6次,每次1000元

{

thread.currentthread().sleep((int)(math.random()*300));

bs.withdraw(1000);

}

}

catch(interruptedexception e)

{}

}

}

public void run() //定义run方法

}

cus(name,bs);

}

}

public class

accounttest

{

public static void main(string [] args) throws interruptedexception

{

bankaccount bs=new bankaccount();

customer customer1=new customer(bs,"小明");

customer customer2=new customer(bs,"张新");

thread t1=new thread(customer1);

thread t2=new thread(customer2);

t1.start();

t2.start();

thread.currentthread().sleep(500);

}

}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯