threading_rlock_demo

 1 import threading, time, random
 2 
 3 share = 4
 4 
 5 # 有多少个lock.acquire()就有多少个lock.release()  
 6 # 可重入锁必须由获得它的线程释放。一次线程已获得可重入锁,同一线程可能再次获得该锁无阻塞;线程必须每次释放它一次
 7 lock = threading.RLock()
 8 
 9 
10 # lock = threading.Lock()
11 
12 
13 class MyThread(threading.Thread):
14     def __init__(self, i):
15         super().__init__()
16         self.i = i
17 
18     def run(self):
19         global share
20         for i in range(3):
21             lock.acquire()
22             print(share)
23             share += self.i
24             time.sleep(random.random())
25             print('+', self.i, '=', share)
26             lock.release()
27 
28 
29 if __name__ == '__main__':
30     th = MyThread(2)
31     th2 = MyThread(5)
32     th.start()
33     th2.start()

 

posted on 2018-08-15 00:51  jovelove  阅读(154)  评论(0)    收藏  举报