java采用多线程机制模拟汇款业务。定义一银行类可接受顾客的汇款,其属性count用于存储账户金额。现有两名顾客,每人分三次、每次100元将钱汇入count。每进行一次汇款,便输出汇款人和账户总额的算法描述
时间: 2023-12-03 19:04:22 浏览: 68
以下是Java代码实现:
```java
class Bank {
private int count = 0;
public synchronized void remit(String name, int money) {
count += money;
System.out.println(name + "汇款" + money + "元,账户总额为" + count + "元");
}
}
class Customer extends Thread {
private Bank bank;
private String name;
public Customer(Bank bank, String name) {
this.bank = bank;
this.name = name;
}
public void run() {
for (int i = 0; i < 3; i++) {
bank.remit(name, 100);
}
}
}
public class Main {
public static void main(String[] args) {
Bank bank = new Bank();
Customer c1 = new Customer(bank, "顾客1");
Customer c2 = new Customer(bank, "顾客2");
c1.start();
c2.start();
}
}
```
在上面的代码中,Bank类表示银行,count属性表示账户金额。remit方法用于接受顾客的汇款,采用了synchronized关键字实现了同步,保证了多线程情况下对count的修改不会出现问题。每次汇款完成后,输出汇款人和账户总额的信息。
Customer类表示顾客,继承自Thread类。在run方法中,循环3次,每次调用Bank的remit方法汇款100元。main方法中创建了两个顾客对象并启动线程。运行程序后,可以看到输出了每次汇款的信息。
阅读全文