1. 程式人生 > >Java--銀行賬戶存取款執行緒設計1(互動執行緒)

Java--銀行賬戶存取款執行緒設計1(互動執行緒)

執行緒之間可能無關,也可能互動。
而執行緒的同步機制併發執行的互動執行緒間存在與時間有關的錯誤。

public class account {

    private String name;
    private double balance;
    public account(String name) {
        this.name = name;
        this.balance=0;
    }
    public String getName() {
        return name;
    }
    public double getBalance
() { return balance; } // public void put(double value){ if(value>0){ this.balance=this.balance+value; } } public double get(double value){ if(value>0){ if(value<=balance){ this.balance=this.balance-value
; }else{ value=this.balance; this.balance=0; } } return value; } }
public class save extends Thread{
    private account a;
    private double value;

    public save(account a, double value) {
        this.a = a;
        this
.value = value; } public void run() { double b=a.getBalance(); a.put(value); System.out.println(a.getName()+"賬戶,現有"+b+",存入" +value+",餘額"+a.getBalance()); } }
public class fetch extends Thread{
    private account a;
    private double value;

    public fetch(account a, double value) {
        this.a = a;
        this.value = value;
    }

    public void run() {
        double b=a.getBalance();
        System.out.println(a.getName()+"賬戶,現有"+b+",取出"
        +a.get(value)+",餘額"+a.getBalance());
    }
}
public class bank {

    public static void main(String[] args) {

//      account a1=new account("wang");
//      save s1=new save(a1,100);
//      save s1=new save(new account("wang"),100);
//      s1.start();
        account a1=new account("wang");
        new save(a1,100).start();
        new save(a1,200).start();
        new fetch(a1,300).start();

        new save(new account("xu"),100).start();
    }

}

執行結果1:
wang賬戶,現有0.0,存入100.0,餘額100.0
wang賬戶,現有100.0,取出100.0,餘額0.0
wang賬戶,現有0.0,存入200.0,餘額200.0
xu賬戶,現有0.0,存入100.0,餘額100.0
執行結果2:
wang賬戶,現有0.0,存入100.0,餘額100.0
wang賬戶,現有100.0,存入200.0,餘額300.0
xu賬戶,現有0.0,存入100.0,餘額100.0
wang賬戶,現有300.0,取出300.0,餘額0.0
由執行結果可以看出,執行緒很亂

相關推薦

Java--銀行賬戶取款執行設計1互動執行

執行緒之間可能無關,也可能互動。 而執行緒的同步機制併發執行的互動執行緒間存在與時間有關的錯誤。 public class account { private String name;

實驗五 使用執行設計秒錶時間不精確

實驗五 使用執行緒 實驗目的 實驗要求 工程程式碼 實驗目的 熟悉和掌握Android執行緒的使用 實驗要求 完成一個秒錶,具備啟停功能,正確使用工作執行緒完成介面重新整理 分析秒錶的計時是否

Java--銀行取款執行設計2執行互斥

同步:物件鎖的概念。如果多個執行緒共享某一個物件,作業系統會為每個物件用一個單詞生成一個鎖,鎖和物件一一對應。如果一個執行緒要對某個物件進行操作,必須拿到物件的鎖。 加鎖:同步語句或者同步方法(這裡用

java執行快速入門二十一

CountDownLatch(閉鎖)計數器   有一個任務A,它要等待其他4個任務執行完畢之後才執行,此時就可以利用CountDownLatch來實現這種功能 package com.cppdy; import java.util.concurrent.CountDownLatch

java執行快速入門二十二

執行緒池的好處:   避免我們過多的去new執行緒,new是佔資源的(GC主要堆記憶體)   提高效率   避免浪費資源   提高響應速度 作用:會把之前執行某個執行緒完畢的執行緒不會釋放掉會留到執行緒池中給下一個呼叫的執行緒直接使用 前提:AB執行緒在同一個執行緒池裡面;A執行緒執行完畢了,B執

Java執行間同步詭異的IllegalMonitorStateException

  前兩天去面試,被問到了一個執行緒同步的問題,兩個執行緒依次輸出1……100,一個執行緒只輸出奇數,一個只輸出偶數。之前工作中沒寫過執行緒同步的程式碼,只知道使用object的wait()和notify()方法可以實現執行緒同步,之前也看過執行緒池實現的程式碼,用的也是wait()和not

java執行1程序和執行

多執行緒樣例 我們用工人卸貨舉例:有一集裝箱的貨物等待卸車,共100個箱子,一個工人一次只能搬一個箱子。 如果只有一個工人,那麼該工人需要搬運100次,而且是不停歇的搬運。 如果有5個或者10個工人,那麼平均每個工人只需要搬運20或者10次就可以了。 甚至有1

Java執行詳解深度好文

Java執行緒:概念與原理 一、程序與執行緒         程序是指一個記憶體中執行的應用程式,每個程序都有自己獨立的一塊記憶體空間,即程序空間或(虛空間)。程序不依賴於執行緒而獨立存在,一個程序中可以啟動多個執行緒。比如在Windows系統中,一個執行的ex

執行設計模式

並行設計模式屬於優化的一部分,它是對一些常用的多執行緒結構的總結和抽象。與序列相比,並行程式的結構通常更為複雜。因此合理的使用並行模式在多執行緒開發中更具有意義。 Future模式 Future模式有點類似商品訂單。比如網購時,當看重某一件商品時,就可以提交訂單

java在子執行與主執行傳遞資料回撥函式

預習知識點: 什麼是回撥函式? 下面是知乎大神的回答,簡直不能再精闢 程式碼: package kun.thread; public class THread { static C c=new C(); //flag用來標誌子執行緒執行結束 stati

.NET應用架構設計—服務端開發多執行使用小結執行使用常識

有一段時間沒有更新部落格了,最近半年都在著寫書《.NET框架設計—大型企業級框架設計藝術》,很高興這本書將於今年的10月份由圖靈出版社出版,有關本書的具體介紹等書要出版的時候我在另寫一篇文行做介紹。可以先透露一下,本書是博主多年來對應用框架學習的總結,裡面包含了十幾個重量級框架模式,這些模式都是我們目前所經常

Java兩個執行交替列印實現Runnable介面

package senTset; //紙張類 public class page { private boolean isWrite = false; //設定一個公共變數來控制執行緒執行 public synchronized void

Java 執行池ThreadPoolExecutor基於jdk1.8

介紹 執行緒池的作用就是提供一種對執行緒的管理,避免由於過多的建立和銷燬執行緒所造成的開銷。在一個“池”中維護著一定數量的執行緒,達到可重複利用的效果。在Java中,執行緒池的實現主要是通過Threa

Java 執行池ThreadPoolExecutor基於jdk1.8

private boolean addWorker(Runnable firstTask, boolean core) 首先分析一下引數,firstTask就是指我們使用者傳入的需要執行的認為,

java面試題之----jdbc中使用的設計模式橋接模式

connect @override 操作 tro orb his order ng- return 1.JDBC(JavaDatabase Connectivity) JDBC是以統一方式訪問數據庫的API. 它提供了獨立於平臺的數據庫訪問,也就是說,有了JDB

執行 之 建立兩種方法和啟動

java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread 類或者子類的例項。 每個執行緒的任務是完成一定的任務,就是執行一段程式流。 目前有兩種建立方式(第三種後續補充) 一種是繼承Thread類 一種是實現Runnable介面` 一、繼承Thread類 1.定

執行的學習1常見簡單方法

程序&執行緒 程序:執行中的應用程式稱為程序,擁有系統資源(cpu,記憶體) 執行緒:程序中的程式片段,一個程序中可以有多個程式片段。本身不單獨擁有資源(共享所在程序的資源) 並行&併發 並行:兩個任務同時進行。真正意義上的同時進行

Java程式設計師從笨鳥到菜鳥之三十二大話設計模式設計模式分類和三種工廠模式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c#多執行操作測試阻塞執行,結束任務

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te

執行 之 建立兩種方法和啟動

java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread 類或者子類的例項。 每個執行緒的任務是完成一定的任務,就是執行一段程式流。 目前有兩種建立方式(第三種後續補充) 一種是繼承Thread類 一種是實現Runnable介面` 一、繼承Th