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()