线程锁
当多线程争夺锁时,允许第一个获得锁的线程进入临街区,并执行代码。所有之后到达的线程将被阻塞,直到第一个线程执行结束,退出临街区,并释放锁。需要注意,那些阻塞的线程是没有顺序的。
import threading,time class Thread1(threading.Thread): def run(self): for i in range(1,11): if i==3: cond.acquire()#获取锁 cond.wait()#等待 cond.release()#释放锁 print(i) time.sleep(1) class Thread2(threading.Thread): def run(self): for i in range(50,39,-1): print(i) time.sleep(1) cond.acquire()#获取锁 cond.notify()#通知锁 cond.release()#释放锁 lock = threading.Lock() cond = threading.Condition(lock=lock) t1=Thread1() t2=Thread2() t1.start() t2.start()