`
yuyeyi
  • 浏览: 38177 次
  • 性别: 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多线程同步问题完整代码

    在本文中,我们将使用银行取钱的例子来演示多线程同步问题的解决方案。 首先,我们定义了一个 Bank 类,代表银行对象,该对象有一个总金额属性_sum。Bank 类中有两个方法:add(存钱)和 reduce(取钱)。在这两个...

    JAVA多线程的一个带UI界面的例子

    在Java编程中,多线程是一项关键特性,...总之,这个"JAVA多线程的一个带UI界面的例子"涵盖了Java多线程编程和GUI设计的核心概念,通过实际的代码示例,有助于开发者深入理解如何在实际应用中正确、高效地使用多线程。

    简单银行存款取款,以及实现线程java源代码

    在Java编程领域,多线程是并发处理任务的关键技术,特别是在设计复杂的系统,如银行交易系统时。"简单银行存款取款,以及实现线程java源代码"这个项目旨在演示如何利用Java实现银行账户的基本操作——存款和取款,并...

    java ATM +tcp+多线程+oracle

    Java ATM 实现基于TCP协议与Oracle数据库的多线程应用是一个经典的计算机科学示例,它涵盖了网络编程、数据库操作和并发处理等多个核心IT知识点。在这个项目中,开发者使用Java语言来构建一个模拟自动取款机(ATM)...

    java多线程1

    本文通过具体的代码示例,探讨了Java多线程中的同步问题。多线程虽然能显著提高程序性能,但在处理共享资源时需要特别注意同步问题,以免出现数据不一致的情况。通过使用适当的同步机制,我们可以确保多线程程序的...

    java 多线程同步方法的实例

    在Java编程语言中,多...同时,理解并掌握这些同步机制的原理和使用场景,对于提升Java多线程编程的能力至关重要。在实际开发中,要特别注意死锁、活锁和饥饿等问题,避免因线程同步不当而导致的性能下降或程序错误。

    Java多线程高级技术.pdf

    在标题和描述中,我们看到文档的标题是“Java多线程高级技术.pdf”,说明该文档是关于Java编程语言中多线程编程的高级技术的介绍。描述部分重复了标题信息,没有额外提供内容。而文档中的部分内容表明,本文将涉及到...

    Java同步代码块解决银行取钱的安全问题实例分析

    在Java多线程编程中,同步代码块是解决线程安全问题的重要机制。同步代码块的语法格式是:synchronized(obj){ //此处代码块就是同步代码块。}其中obj就是同步监视器。同步监视器的目的是阻止两个线程对同一共享资源...

    Java高级程序设计-多线程(二).pptx

    在Java高级程序设计中,多线程是一个关键概念,它能提升程序的执行效率,尤其在处理高并发场景时。多线程的创建有两种主要方式:继承`Thread`类和实现`Runnable`接口。实现`Runnable`接口更有利于资源的共享,因为它...

    Java多线程同步[定义].pdf

    Java多线程同步是软件开发中的重要概念,特别是在并发编程中。Java内置的`synchronized`关键字是实现线程同步的基础,它可以确保同一时间只有一个线程访问特定的代码块或方法,从而避免数据竞争和不一致的情况。然而...

    银行的简单转账代码(java)

    9. **并发控制**:如果多线程环境下处理转账,还需要考虑线程安全问题。可能需要使用`synchronized`关键字或者锁来保证同一时间只有一个线程能够修改账户余额。 10. **日志记录**:为了追踪和排查问题,日志记录是...

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

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

    张三和太太取款同步问题

    在IT行业中,同步问题是一个非常重要的概念,尤其是在多线程编程和并发控制中。这个问题的标题"张三和太太取款同步问题"暗示了我们正在讨论一个涉及到并发操作的场景,比如银行账户取款,而这个场景可能由两个或多个...

    多线程锁的解释范例

    在Java编程中,多线程是并发执行任务的关键机制,特别是在服务器端应用或者高并发场景下。线程锁则是确保多线程环境下的数据一致性、避免竞态条件和死锁的重要工具。本示例通过一个简单的银行账户取款问题来阐述多...

    Java模拟银行系统

    在本项目中,"Java模拟银行系统"是一个典型的软件开发示例,主要使用Java编程语言来构建一个类似于实际银行操作的系统。这个系统可能包括账户管理、交易处理、用户交互等多个核心功能模块,旨在帮助学习者理解面向...

    Java线程的同步与死锁

    本文将深入探讨Java线程中的同步机制及其可能导致的一个严重问题——死锁,并通过具体的示例来帮助读者更好地理解和解决这些问题。 #### 二、Java线程同步 ##### 2.1 同步的重要性 在多线程环境中,多个线程可能会...

    银行系统的java代码

    在银行系统的Java代码中,我们可以看到几个关键的知识点,这些知识点是构建银行系统或任何...为了实现一个完整的银行系统,开发者还需要深入学习数据库管理系统、网络通信、安全协议、多线程和并发编程等更高级的知识。

    Demo.rar_DEMO_bank_java银行_模拟银行_银行

    7. **多线程**:模拟并发存取款操作,可能需要用到Java的多线程技术,保证操作的并发性和正确性。 8. **单元测试和集成测试**:使用JUnit或其他测试框架,确保每个模块的功能正确,并且整个系统能够协同工作。 9. ...

    多线程+同步+锁和条件+示例

    在"多线程+同步+锁和条件+示例"这个资源中,可能包含了一些具体的Java代码示例,这些示例可能演示了如何使用上述机制来解决实际问题。例如,可能会有一个银行账户类,多个线程模拟存款和取款操作,通过synchronized...

    java 银行系统 可以在eclipse中运行,别的环境不知道了

    Java银行系统是一个基于Java编程语言开发的金融应用示例,它可以用于模拟银行的各种业务操作,如账户管理、存款、取款、转账等。这个系统设计的目的是为了教学和学习,因此,开发者可能在功能实现和代码优化上有所...

Global site tag (gtag.js) - Google Analytics