- 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中的多线程示例银行取款问题
最新推荐文章于 2024-01-24 17:09:09 发布