java多线程怎么实现取款小程序(java,开发技术)

时间:2024-05-08 17:02:38 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1、建立java类

java多线程怎么实现取款小程序

这里建立了三个java类,第一个Account类,用于封装账户中的各种信息;第三个DrawThread类用于实现线程体;第二个类主要封装了主函数

2、Account类

publicclassAccount{//封装账户编号,账户余额和两个成员变量privateStringaccountNo;privatedoublebalance;publicAccount(){};publicAccount(StringaccountNo,doublebalance){this.accountNo=accountNo;this.balance=balance;}publicvoidsetAccountNo(StringaccountNo){this.accountNo=accountNo;}publicvoidsetBalance(doublebalance){this.balance=balance;}publicStringgetAccountNo(){returnaccountNo;}publicdoublegetBalance(){returnbalance;}publicinthashCode(){returnaccountNo.hashCode();}publicbooleanequals(Objectobj){if(this==obj){returntrue;}if(obj!=null&&obj.getClass()==Account.class){Accounttarget=(Account)obj;returntarget.getAccountNo().equals(accountNo);}returnfalse;}}

3、DrawThread类

publicclassDrawThreadextendsThread{//模拟用户账户privateAccountaccount;//当前取钱线程所希望的取钱数privatedoubledrawAmount;publicDrawThread(Stringname,Accountaccount,doubledrawAmount){super(name);this.account=account;this.drawAmount=drawAmount;}//当多个线程修改同一个共享数据时,将涉及数据安全问题publicvoidrun(){//使用account作为同步监视器,任何线程进入下面同步代码块之前//必须先获得对account账户的锁定——其他线程无法获得锁,也就无法修改它synchronized(account){if(account.getBalance()>=drawAmount){//吐出钞票System.out.println(getName()+"取钱成功!吐出钞票:"+drawAmount);/*try{Thread.sleep(1);}catch(InterruptedExceptionex){ex.printStackTrace();}*///修改余额account.setBalance(account.getBalance()-drawAmount);System.out.println("\t余额为:"+account.getBalance());}else{System.out.println(getName()+"取钱失败!余额不足!");}}}}

4、DrawTest类

publicclassDrawTest{publicstaticvoidmain(String[]args){//创建一个账户Accountacct=newAccount("1234567",1000);//模拟两个线程对同一个账户取钱newDrawThread("jack",acct,800).start();newDrawThread("rose",acct,800).start();}}

运行结果:

java多线程怎么实现取款小程序

以上程序有一点需要注意,就是用到了同步代码块。它可以解决run()方法不具备同步安全性(即当两个线程同时发送请求时即会造成异常)

同步代码块:

synchronized(obj){//需要执行的代码}

如果我们去掉run()方法中的同步代码块,继续运行

Accountacct=newAccount("1234567",1000);newDrawThread("jack",acct,800).start();newDrawThread("rose",acct,800).start();

(银行账户一共1000元,Jack和rose分别对同一账户取钱)

运行结果:

java多线程怎么实现取款小程序

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:java多线程怎么实现取款小程序的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:微信小程序出现wx.navigateTo页面不跳转问题的解决方法下一篇:

8 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18