`
java_cd
  • 浏览: 59456 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

    博客分类:
  • Java
阅读更多
public class Test {   
  public static void main(String[] args) {   
    Account account = new Account();   
    for (int i = 0; i < 1000; i++) {   
      new TestAccount1(account).start();   
      new TestAccount2(account).start();   
    }   
  }   
}   
  
/**  
* @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(1);   
      } catch (InterruptedException e) {   
        e.printStackTrace();   
      }   
      balance -= money;   
    } else {   
      System.out.println("对不起,余额不足!");   
    }   
    System.out.println("余额为:" + getBalance() + "元!");   
  }   
}   
  
/**  
* @authorleno 银行卡  
*/  
class TestAccount1 extends Thread {   
  private Account account;   
  
  public TestAccount1(Account account) {   
    this.account = account;   
  }   
  
  @Override  
  public void run() {   
    account.withdrawals(2);   
  }   
}   
  
/**  
* @authorleno 存折  
*/  
class TestAccount2 extends Thread {   
  private Account account;   
  
  public TestAccount2(Account account) {   
    this.account = account;   
  }   
  
  @Override  
  public void run() {   
    account.withdrawals(1);   
  }   
}  
分享到:
评论

相关推荐

    以银行取钱为例模拟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