zoukankan      html  css  js  c++  java
  • 用JAVA中的多线程示例银行取款问题

     

    package com.softeem.demo;

    /**
     *@author leno
     *账户类
     *默认有余额,可以取款
     */
    class Account {
        private float balance = 1000;

        public float getBalance() {
            return balance;
        }

        public void setBalance(float balance) {
            this.balance = balance;
        }

        /**
         *取款的方法需要同步
         *@param money
         */广州达内http://www.gztarena.com/
        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("对不起,余额不足!");
            }
        }
    }

    /**
     *@author leno
     *银行卡
     */
    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();
        }
    }

    转--https://www.cnblogs.com/javaitpx/archive/2012/11/14/2769329.html

  • 相关阅读:
    预设池(滑雪大冒险)
    随机
    python select模块详解
    轮询、长轮询、长连接、websocket
    Python中的栈溢出及解决办法
    JavaScript中的this的指代对象详解
    Django--缓存、信号、序列化
    SQLAlchemy中的自引用
    Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
    虚拟机下安装centos7方法,修改系统语言为简体中文的方法
  • 原文地址:https://www.cnblogs.com/xyyou/p/14255961.html
Copyright © 2011-2022 走看看