采用多线程机制模拟汇款业务。定义一银行类可接受顾客的汇款,其属性count用于存储账户金额。现有两名顾客,每人分三次、每次100元将钱汇入count。每进行一次汇款,便输出汇款人和账户总额。要求使用runnable接口和thread类实现多线程的用法
时间: 2023-12-03 08:03:45 浏览: 200
好的,您的问题是如何采用多线程机制模拟汇款业务,我理解了。以下是代码实现:
```java
class Bank implements Runnable {
private int count;
private String customerName;
public Bank(String customerName) {
this.count = 0;
this.customerName = customerName;
}
public void run() {
// 循环进行3次汇款
for (int i = 1; i <= 3; i++) {
synchronized (this) {
// 将100元汇入count
count += 100;
// 输出汇款人和账户总额
System.out.println("顾客" + customerName + "已汇款100元,账户总额为" + count);
}
// 等待一段时间,模拟汇款过程
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Test {
public static void main(String[] args) {
// 创建两名顾客的银行账户
Bank customer1 = new Bank("A");
Bank customer2 = new Bank("B");
// 分别启动两条线程模拟汇款过程
Thread thread1 = new Thread(customer1);
Thread thread2 = new Thread(customer2);
thread1.start();
thread2.start();
}
}
```
以上代码定义了一个 Bank 类,该类实现了 Runnable 接口,可以在 run 方法中进行多线程处理。在该 Bank 类中,我们定义了 count 用于存储账户金额,同时定义了 customerName 表示顾客的名字。
在 run 方法中,我们可以看到循环了三次并且采用了 synchronized 关键字来保证多线程的安全性。在循环中,我们将100元汇入 count,并输出汇款人和账户总额。此外,我们还加入了 Thread.sleep 方法,来模拟汇款的过程。
在 Test 类中,我们创建了两名顾客的银行账户,并分别启动两条线程模拟汇款过程。
希望能够解答您的问题。
阅读全文