久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

java多線程實現(xiàn)取款小程序

這篇文章主要為大家詳細介紹了java多線程實現(xiàn)取款小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近java學(xué)到了多線程編程中的線程同步問題,教材中的取款小程序?qū)τ诶斫饩€程和線程同步很有幫助,在此將其補充完善.

1、建立java類

這里建立了三個java類,第一個Account類,用于封裝賬戶中的各種信息;第三個DrawThread類用于實現(xiàn)線程體;第二個類主要封裝了主函數(shù)

2、Account類

public class Account {
? ? //封裝賬戶編號,賬戶余額和兩個成員變量
? ? private String accountNo;
? ? private double balance;

? ? public Account(){};
? ? public Account(String accountNo,double balance){
? ? ? ? this.accountNo=accountNo;
? ? ? ? this.balance=balance;
? ? }

? ? public void setAccountNo(String accountNo)
? ? {
? ? ? ? this.accountNo=accountNo;
? ? }
? ? public void setBalance(double balance){
? ? ? ? this.balance=balance;
? ? }

? ? public String getAccountNo(){
? ? ? ? return accountNo;
? ? }
? ? public double getBalance(){
? ? ? ? return balance;
? ? }

? ? public int hashCode(){
? ? ? ? return accountNo.hashCode();
? ? }

? ? public boolean equals(Object obj){
? ? ? ? if(this==obj){
? ? ? ? ? ? return true;
? ? ? ? }
? ? ? ? if (obj!=null&&obj.getClass()==Account.class){
? ? ? ? ? ? Account target=(Account)obj;
? ? ? ? ? ? return target.getAccountNo().equals(accountNo);
? ? ? ? }
? ? ? ? return false;
? ? }

}

3、DrawThread類

public class DrawThread extends Thread {
? ? //模擬用戶賬戶
? ? private Account account;
? ? //當(dāng)前取錢線程所希望的取錢數(shù)
? ? private double drawAmount;

? ? public DrawThread(String name, Account account, double drawAmount) {
? ? ? ? super(name);
? ? ? ? this.account = account;
? ? ? ? this.drawAmount = drawAmount;
? ? }

? ? //當(dāng)多個線程修改同一個共享數(shù)據(jù)時,將涉及數(shù)據(jù)安全問題
? ? public void run() {
? ? ? ? //使用account作為同步監(jiān)視器,任何線程進入下面同步代碼塊之前
? ? ? ? //必須先獲得對account賬戶的鎖定——其他線程無法獲得鎖,也就無法修改它
? ? ? ? synchronized (account) {
? ? ? ? ? ? if (account.getBalance() >= drawAmount) {
? ? ? ? ? ? ? ? //吐出鈔票
? ? ? ? ? ? ? ? System.out.println(getName() + "取錢成功!吐出鈔票:" + drawAmount);
? ? ? ? /*
? ? ? ? try {
? ? ? ? ? ?Thread.sleep(1);
? ? ? ? ? ?}catch (InterruptedException ex)
? ? ? ? {
? ? ? ? ? ? ex.printStackTrace();
? ? ? ? }
? ? ? ? */
? ? ? ? ? ? ? ? //修改余額
? ? ? ? ? ? ? ? account.setBalance(account.getBalance() - drawAmount);
? ? ? ? ? ? ? ? System.out.println("\t余額為:" + account.getBalance());
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? System.out.println(getName() + "取錢失敗!余額不足!");
? ? ? ? ? ? }
? ? ? ? }
? ? }
}

4、DrawTest類

public class DrawTest {
? ? public static void main(String[] args){
? ? ? ? //創(chuàng)建一個賬戶
? ? ? ? Account acct=new Account("1234567",1000);
? ? ? ? //模擬兩個線程對同一個賬戶取錢
? ? ? ? new DrawThread("jack",acct,800).start();
? ? ? ? new DrawThread("rose",acct,800).start();
? ? }
}

運行結(jié)果:

以上程序有一點需要注意,就是用到了同步代碼塊。它可以解決run()方法不具備同步安全性(即當(dāng)兩個線程同時發(fā)送請求時即會造成異常)

同步代碼塊:

synchronized (obj){
//需要執(zhí)行的代碼
}

如果我們?nèi)サ魊un()方法中的同步代碼塊,繼續(xù)運行

Account acct=new Account("1234567",1000);
new DrawThread("jack",acct,800).start();
new DrawThread("rose",acct,800).start();

(銀行賬戶一共1000元,Jack和rose分別對同一賬戶取錢)

運行結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持html5模板網(wǎng)。

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

堆(優(yōu)先隊列)是一種典型的數(shù)據(jù)結(jié)構(gòu),其形狀是一棵完全二叉樹,一般用于求解topk問題。本文將利用Java語言實現(xiàn)堆,感興趣的可以學(xué)習(xí)一下
Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節(jié)點到其他所有節(jié)點的最短路徑。本文將詳解該算法的圖解與實現(xiàn),需要的可以參考一下
這篇文章主要介紹了Java中ThreadLocal導(dǎo)致內(nèi)存OOM的原因分析,文章基于Java的相關(guān)內(nèi)容展開ThreadLocal導(dǎo)致內(nèi)存OOM的原因分析,需要的小伙v阿布可以參考一下
這篇文章主要介紹了Java中CyclicBarrier?循環(huán)屏障,可以實現(xiàn)讓一組線程等待至某個狀態(tài)屏障點之后再全部同時執(zhí)行,下面文章分享CyclicBarrier循環(huán)屏障的原理,需要的小伙伴可以參考一下
這篇文章主要介紹了利用Java代碼寫一個并行調(diào)用模板,文章基于Java的相關(guān)內(nèi)容展開寫一個并行調(diào)用模板的詳細介紹,具有一定的參考價值,需要的小伙伴可以參考一下
API(Application?Programming?Interface)應(yīng)用程序編程接口,java?API是一本程序員字典,是JDK提供給我們使用的類的說明文檔,下面這篇文章主要給大家介紹了關(guān)于Java高版本Api在Android中的使用方法,需
主站蜘蛛池模板: 大尺度做爰床戏呻吟舒畅 | 日本不卡中文字幕 | 人人干人人澡 | 黄色一级大片 | 欧美一级片免费 | 成人网战| 欧美亚洲一区二区三区 | 国产精品国产三级国产专区53 | 日本免费毛片 | 亚洲不卡在线观看 | 九色91在线 | 日本婷婷| 极品av在线| 欧美一级片在线播放 | 日本黄色一级视频 | 国产精品网站在线观看 | 日本中文字幕在线观看 | 国产欧美一区二区精品性色超碰 | 欧美做爰xxxⅹ性欧美大片 | 亚洲在线免费观看 | 黄在线观看 | 色噜噜狠狠一区二区三区 | 青草免费视频 | 日韩视频在线免费观看 | 成人一级视频 | 欧美日韩一区二区三区视频 | 亚洲砖区区免费 | 国产精品久久一区二区三区 | 日本黄色片视频 | 在线a | www.四虎影视 | 国产高清视频一区 | 黄色免费观看网站 | 久久久久久99精品久久久 | 久操福利视频 | 亚洲一区二区免费 | 国产理论在线观看 | 一区二区三区在线看 | 深夜福利视频在线观看 | 国产理论在线 | 91在线看片 |