采用多线程机制模拟汇款业务。定义一银行类可以接受顾客的汇款,其属性count用于存储账户金额。现有两名顾客,每人分三次、每次100元将钱汇入count。美进行一次汇款,便输出汇款人和账户总额 java
时间: 2023-12-03 14:03:48 浏览: 141
用java多线程做的银行汇款问题
4星 · 用户满意度95%
以下是一个采用多线程机制模拟汇款业务的 Python 代码示例:
```python
import threading
class Bank:
def __init__(self):
self.count = 0
self.lock = threading.Lock()
def add(self, amount):
self.lock.acquire() # 加锁
self.count += amount
self.lock.release() # 释放锁
def transfer(self, name, amount):
for i in range(3):
self.add(amount)
print(name, "transferred", amount, "dollars. Total balance is", self.count)
def main():
bank = Bank()
c1 = threading.Thread(target=bank.transfer, args=("Customer1", 100))
c2 = threading.Thread(target=bank.transfer, args=("Customer2", 100))
c1.start()
c2.start()
c1.join()
c2.join()
if __name__ == '__main__':
main()
```
在上面的代码中,Bank 类有一个 count 属性表示账户金额,同时定义了一个 add 方法用于向账户中添加金额,以及一个 transfer 方法用于模拟汇款操作。在 transfer 方法中,使用 for 循环模拟了每个顾客分三次汇款的过程,每次向账户中添加 100 元,并输出汇款人和账户总额。由于多个线程可能同时调用 add 方法修改 count 属性,因此需要使用 threading.Lock 类实现线程同步,确保账户金额的正确性。
在 main 函数中,创建了两个线程分别模拟两个顾客的汇款操作,并启动这两个线程。最后使用 join 方法等待两个线程执行完毕。当两个顾客都完成了三次汇款后,即可输出账户总额。
阅读全文