写一个java代码 采用多线程机制模拟汇款业务。定义一银行类可接受顾客的汇款,其属性 c ount 用于存储账户金额。现有两名顾客,每人分三次、每次100元将钱汇入 cou nt 。每进行一次汇款,便输出汇款人和账户总额
时间: 2023-12-03 17:03:48 浏览: 80
基于Java语言实现模拟银行存取款业务系统
5星 · 资源好评率100%
好的,以下是一个使用多线程机制模拟汇款业务的Java代码:
```java
public class Bank {
private int count; // 账户金额
public Bank(int count) {
this.count = count;
}
public synchronized void transfer(String customer, int amount) {
count += amount; // 汇款
System.out.println(customer + " 汇款 " + amount + " 元,账户总额为 " + count + " 元");
}
public static void main(String[] args) {
Bank bank = new Bank(0); // 初始化账户金额为0
Customer customer1 = new Customer("张三", bank); // 创建顾客1
Customer customer2 = new Customer("李四", bank); // 创建顾客2
customer1.start(); // 启动顾客1的线程
customer2.start(); // 启动顾客2的线程
}
}
class Customer extends Thread {
private String name; // 顾客姓名
private Bank bank; // 银行
public Customer(String name, Bank bank) {
this.name = name;
this.bank = bank;
}
@Override
public void run() {
for (int i = 1; i <= 3; i++) {
bank.transfer(name, 100); // 每次汇款100元
}
}
}
```
该程序定义了一个银行类Bank,其中有一个属性count用于存储账户金额,以及一个transfer方法,用于接受顾客的汇款。在transfer方法中,使用synchronized关键字实现了线程同步,以避免多个线程同时修改账户金额造成的问题。每次汇款完成后,会输出汇款人和账户总额。
程序还定义了一个顾客类Customer,继承自Thread类,并包含一个Bank类型的属性。在顾客类中,重写了run方法,在其中调用银行的transfer方法进行汇款。程序的main方法中,先创建了一个银行对象,然后创建两个顾客对象,并启动它们的线程进行汇款。
阅读全文