Java-多线程 银行取款小练习
2017-07-17 11:38
441 查看
在生活中,如果两个人同时从一个银行账户取款,会不会取到双倍的钱?结果当然不会了,如果这样银行还不得破产,运用多线程synchronized关键字实现银行取款练习,要求同一时间只能有一个对象取钱。
代码如下:
package com.oracle.thread; public class BankDemo { public static void main(String[] args) { // TODO Auto-generated method stub Bank bank=new Bank(); Man man1=new Man(bank); man1.start(); Man man2=new Man(bank); man2.start(); } } //线程类 class Man extends Thread{ private Bank bank=null; public Man(Bank bank){ this.bank=bank; } @Override public void run() { bank.getMoney(400); } } //银行类 class Bank { private int money=500; public synchronized boolean getMoney(int num){ if (num<0) { //取钱的数目要大于0 System.out.println("输入错误!"); return false; }else if (num>money||money<0) { //判断余额是否足够 System.out.println("余额不足!"); return false; }else { try { //模拟取钱时间 Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("取款:"+num+"余额为"+(money-num)); money-=num; return true; } } }
如果有错误或者可以改进的地方,还请各位大神指点。
相关文章推荐
- java多线程 银行取款
- 用JAVA中的多线程示例银行取款问题
- java面试题-用JAVA中的多线程示例银行取款问题
- java面试题-用JAVA中的多线程示例银行取款问题标准版
- 用JAVA中的多线程示例银行取款问题
- 用JAVA的多线程实现银行取款的问题
- 3-3-Java多线程-案例-银行存钱&同步函数
- 银行取款[多线程]{使用volatile修饰共享变量,但此场景并不保证线程同步}
- java例程练习(多线程[线程的优先级等等])
- java例程练习(多线程[死锁问题])
- 银行取款[多线程]{使用重入锁Lock接口ReentrantLock锁确保线程同步}
- 黑马程序员——Java练习笔记——多线程
- java例程练习(多线程[线程的优先级等等])
- java例程练习(多线程[死锁问题])
- java例程练习(多线程综合练习[生产者-消费者问题])
- java线程基础巩固---采用多线程方式模拟银行排队叫号以及Runnable接口存在的必要性
- java多线程练习实例
- Java多线程示例——模拟银行柜台处理业务
- JAVA基础再回首(二十四)——多线程的概述、实现方式、线程控制、生命周期、多线程程序练习、安全问题的解决
- Java设计的银行取款系统-Mysql数据库(改进篇)2017/7/16