JAVA使用两个线程向同一个账户中存钱 每次存1000 共存三次。
时间: 2024-02-17 13:03:25 浏览: 91
好的,这是一个多线程的问题。下面是一个简单的 Java 代码实现:
```java
public class BankAccount {
private double balance;
public BankAccount(double initialBalance) {
this.balance = initialBalance;
}
public synchronized void deposit(double amount) {
System.out.println("Depositing " + amount + "...");
this.balance += amount;
System.out.println("New balance is " + this.balance + ".");
}
public static void main(String[] args) {
BankAccount account = new BankAccount(0);
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 3; i++) {
account.deposit(1000);
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 3; i++) {
account.deposit(1000);
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Final balance is " + account.balance + ".");
}
}
```
在这个例子中,我们创建了一个 `BankAccount` 类,其中包含一个 `deposit` 方法用于存钱。由于多个线程会同时访问 `BankAccount` 对象,因此我们在 `deposit` 方法上使用了 `synchronized` 关键字来进行同步控制,确保线程安全。
然后,我们创建了两个线程,分别代表两个存款操作,每个操作都会存入 1000 元,执行 3 次。我们使用 Lambda 表达式来定义线程的行为。在线程的 `run` 方法中,我们调用 `deposit` 方法来存钱。
最后,我们启动两个线程,等待它们完成,然后输出最终的账户余额。
需要注意的是,由于使用了同步控制,这个程序可以保证线程安全,确保最终的账户余额是正确的。
阅读全文