`
yuyeyi
  • 浏览: 36751 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

用JAVA中的多线程示例银行取款问题

阅读更多
/** 
*@authorleno 
*账户类 
*默认有余额,可以取款 
*/ 
class Account { 
    private float balance = 1000; 

    public float getBalance() { 
      return balance; 
    } 

    public void setBalance(float balance) { 
      this.balance = balance; 
    } 
    
    /** 
    *取款的方法需要同步 
    *@parammoney 
    */ 
    public synchronized void withdrawals(float money) 
    { 
      if(balance>=money) 
      { 
          System.out.println("被取走"+money+"元!"); 
          try { 
              Thread.sleep(1000); 
          } catch (InterruptedException e) { 
              // TODO Auto-generated catch block 
              e.printStackTrace(); 
          } 
          balance-=money; 
      } 
      else  { 
          System.out.println("对不起,余额不足!"); 
      } 
    } 
    
} 

/** 
*@authorleno 
*银行卡 
*/ 
class TestAccount1 extends Thread { 

    private Account account; 
    
    
    public TestAccount1(Account account) { 
      this.account = account; 
    } 


    @Override 
    public void run() { 
      account.withdrawals(800); 
      System.out.println("余额为:"+account.getBalance()+"元!"); 
    }  
} 
/** 
*@authorleno 
*存折 
*/ 
class TestAccount2 extends Thread { 

    private Account account; 
    public TestAccount2(Account account) { 
          this.account = account; 
      } 
    @Override 
    public void run() { 
      account.withdrawals(700); 
      System.out.println("余额为:"+account.getBalance()+"元!"); 
    }  
} 

public class Test { 
    public static void main(String[] args) { 
      Account account = new Account(); 
      TestAccount1 testAccount1 = new TestAccount1(account); 
      testAccount1.start(); 
      TestAccount2 testAccount2 = new TestAccount2(account); 
      testAccount2.start(); 
    } 
} 
 
分享到:
评论

相关推荐

    以银行取钱为例模拟Java多线程同步问题完整代码

    主要介绍了以银行取钱为例模拟Java多线程同步问题完整代码,具有一定借鉴价值,需要的朋友可以参考下。

    java经典实例 代码简短详细

    面向对象思想 单子模式 多线程示例银行取款问题 多线程示例生产者和消费者问题 编程实现序列化

    多线程ATM取款机模拟

    网上多线程入门大多是生产提货的例子,这次来个复杂点的

    java源码包---java 源码 大量 实例

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    java源码包2

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    java源码包4

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    java源码包3

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    动力节点Java基础301集_史上最全的Java基础教程

    5:使用多线程模拟用户去ATM取钱讲的也非常不错,后续还提了一个小Timer定时任务类相当全面。 6:使用反射创建对象,调用方法,访问字段的值讲的也相当的详细,尤其IO+Properties+Reflect的综合案例对后期理解jdbc相当...

    java线程池概念.txt

    需要创建多线程的话,那就要处理好线程安全的问题;因为项目需要,还涉及到排队下载的功能,所以就选择了线程池来管理线程以及线程池里面的任务队列workQueue来实现项目所需的功能;  b:在实际使用中,服务器在...

    asp.net知识库

    如何解决ACCESS中SELECT TOP语句竟然返回多条记录的问题? Asp.net 利用OleDb的GetOLEDBSchemaTable方法得到数据库架构信息 用于 Visual Studio .Net 的 IBM DB2 开发外接程序 第2章 并发操作的一致性问题 (2) Using...

Global site tag (gtag.js) - Google Analytics