利用Python实现多窗口订票系统,利用
threading.Lock()
避免出现一票多卖,无票也卖的情况,并规范化输出情况。
代码:
import threading
import time
tickets, lock = 20, threading.Lock()
class TicketWindows(threading.Thread):
def __init__(self, window_name):
threading.Thread.__init__(self)
self.window_name = window_name
def run(self):
sell_tickets(self.window_name)
def sell_tickets(threadName):
global tickets
while tickets > 0:
lock.acquire() # 加一个同步锁,类似Java中的synchronized
if tickets > 0:
print(threadName, "准备出票,还剩余票:", tickets, "张")
tickets -= 1
print(threadName, "卖出1张车票,还剩:", tickets, "张")
print("----------------------------------")
else:
print("车票售空!")
lo