#!/usr/bin/evn python
# -*- coding:utf-8 -*-
import threading
import random
import time
import os
# 声明一个线程锁
lock=threading.Lock()
count=100;
#买票的方法
def saleTicket():
global count
#如果是使用多线程的时候需要使用线程锁的问题进行处理
lock.acquire();
#随机出来一个数字。
salecount=random.Random().randint(1,10)
#随机出来一个需要等待的时间
sleepcount=random.Random().randint(1,5)
print("你需要买的票数据为:"+str(salecount)+"你需要等待:"+str(sleepcount)+"秒!")
time.sleep(sleepcount)
if count-salecount <0:
if count>0:
print("你订票数为:"+str(salecount)+",余票为:"+str(count)+"!出票失败!")
else:
print("已经售完!!!!!!");
os._exit(0)#如果是已经卖完车票就退出程序
else:
count=count-salecount
currentThobj=threading.currentThread();
print(str(count)+",currentThobj:"+str(currentThobj.getName()))
#每次执行完操作后,必须要释放线程锁给其他线程使用,不然基本线程一直在等待
lock.release();
threadcount=0;
for i in range(0,1000):
threadobj=threading.Thread(target=saleTicket);
threadobj.start();
threadcount=threadcount+1;
print("共开启了:"+str(threadcount)+"条线程!")