'''
练习:线程锁
threading 模块提供了Lock和RLock两个类
1、threading.Lock:它是基本的锁对象,每次只能锁定一次,其余的锁请求,需要等待锁释放后才能获取。
2、threading.RLock:它代表可重入锁,同一个线程中可以多次锁定,也可以多次释放。该锁的acquire()和Release()方法必须成对出现
3、Lock和RLock都提供了两个方法实现加锁和释放锁
a、acquire(blocking=True,timeout=-1),请求加锁,其中timeout制定加锁多少秒
b、release():释放锁
'''
import threading
import time
class Account:
def __init__(self,account_no,balance):
#定义account构造函数
#封装账户编号和账户余额两个成员变量
self.account_no = account_no
self._balance = balance
self.lock = threading.RLock()
def getBalance(self):
#由于账户余额不允许随便修改,所以只为self._balance提供getter方法
return self.balance
def draw(self,draw_amount):
#提供一个线程安全的draw()方法来完成取钱操作
#加锁
self.lock.acquire()
try:
if self._balance >= draw_amount:
print(threading.current_thread().name+"取钱成功!吐出钞票:"+str(draw_amount))
【Python】-thread RLock操作
最新推荐文章于 2023-07-01 15:39:56 发布