import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class BankAccount {
private double balance;
private Lock lock = new ReentrantLock();
public BankAccount() {
this.balance = 0.0;
}
public void deposit(double amount) {
lock.lock();
try {
double currentBalance = balance;
double newBalance = currentBalance + amount;
balance = newBalance;
} finally {
lock.unlock();
}
}
public void multiThreadDeposit(int numThreads, double amountPerThread) throws InterruptedException {
Thread[] threads = new Thread[numThreads];
for (int i = 0; i < numThreads; i++) {
threads[i] = new Thread(() -> {
deposit(amountPerThread);
});
threads[i].start();
}
for (int i = 0; i < numThreads; i++) {
threads[i].join(); // 等待所有线程完成
}
}
public double getBalance() {
return balance;
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
BankAccount bankAccount = new BankAccount();
int numThreads = 100;
double amountPerThread = 1.0;
bankAccount.multiThreadDeposit(numThreads, amountPerThread);
System.out.println("Final balance: " + bankAccount.getBalance());
}
}
这个Java示例使用了ReentrantLock
来实现线程同步,确保在多线程环境下对账户余额的访问是线程安全的。multiThreadDeposit
方法启动了100个线程,并发执行存款操作。
请注意,这只是一个简单的示例代码,用于演示如何在Java中实现多线程并发操作。在实际应用中,您可能需要更多的功能,如错误处理、日志记录等。此外,在真实的银行应用中,通常会使用更复杂的事务和安全性措施来确保数据的完整性和安全性。