多线程—卖票

import threadingimport timelist_ticket=[]      #定义票池lock=threading.Lock() #获得多线程锁num=30#票数for i in range(1,num+1):     #ticket_num="0"*(len(str(num))-len(str(i)))+str(i)    #001,003,013     ticket_num=str(i).zfill(3)     list_ticket.append(ticket_num)# print(list_ticket)def seel_ticket(num):  # 通过传参来用窗口买票    #全局变量   # global list_ticket   #time.sleep(1)   while len(list_ticket)>0:       #time.sleep(0.5)       lock.acquire()      #打开线程锁       print("正在打印票")       thre = list_ticket[0]   #依次买票       print(num,"号窗口售票点出票成功,票号为:",thre )       del list_ticket[0]   #取出以后就得马上删除       lock.release()      #释放       time.sleep(0.1)    # 必须有这个睡眠#++++++===========================================================# #新建线程# list_thread=[]   # 线程的集合for i in range(5):    thread = threading.Thread(target=seel_ticket, args=(i+1,)).start()    # list_thread.append(thread)# for i in list_thread:#     i.start()

# #创建5个线程# thread=threading.Thread(target=seel_ticket,args=(1,))# thread2=threading.Thread(target=seel_ticket,args=(2,))# thread3=threading.Thread(target=seel_ticket,args=(3,))# thread4=threading.Thread(target=seel_ticket,args=(4,))# thread5=threading.Thread(target=seel_ticket,args=(5,))# #启动# thread.start()# thread2.start()# thread3.start()# thread4.start()# thread5.start()

原文地址:https://www.cnblogs.com/wxjqss/p/10001781.html

时间: 2024-10-03 21:53:57

多线程—卖票的相关文章

多线程卖票代码

package com.loaderman.syn; public class Demo_Ticket { /** * 需求:铁路售票,一共100张,通过四个窗口卖完. */ public static void main(String[] args) { new Ticket().start(); new Ticket().start(); new Ticket().start(); new Ticket().start(); } } class Ticket extends Thread {

Java多线程卖票例子

1 package com.test; 2 3 public class SaleTickets implements Runnable 4 { 5 private int ticketCount = 10;// 总的票数 6 Object mutex = new Object();// 锁 7 8 /** 9 * 卖票 10 */ 11 public void sellTicket() 12 { 13 synchronized (mutex)// 当操作的是共享数据时, 14 // 用同步代码

对于JAVA多线程卖票小程序的理解

昨天把多线程重新看了一遍,发现自己还是有许多需要理解的地方,现在写一篇总结. 一:利用继承Thread类会出现的问题: public class SellTicketsThread extends Thread { private int tickets = 10; public SellTicketsThread(String name) { super(name); } @Override public void run() { while (true) { if(tickets<=0) b

老生常谈之多线程卖票问题

代码系本人逐字逐句编写所得,转载请注明出处,谢谢合作! 多线程售票的问题算是老生常谈了,笔者是Java初学者,曾为弄清楚这个问题在度娘里搜过好多篇关于这个问题的代码,发现正确的代码还是很有限.粘贴复制的现象很严重,而且大多数代码问题主要是在打印车票超过数量的问题上(部分会打印出负数票号),还有个别会出现表面看似打印结果正确,但其实程序中还有线程在等待执行(在Eclipse的控制台看到明显的"红点"一直在亮着).以下是笔者自己写的关于这个问题的代码,由于个人水平有限,难免有所疏漏,希望大

经典案例那个什么多线程--卖票..........................就是好像有点不对~~!先写下来.有大哥哥,大姐姐帮看下吗

package javawork; public class RunnableDemo2 { public static void main(String[] args) { Runnable02 ru = new Runnable02(); Thread ru1 = new Thread(ru); Thread ru2 = new Thread(ru);// 两个窗口 ru1.start();// 两个窗口启动 ru2.start(); } } class Runnable02 impleme

多线程系列1:经典卖票

1.卖票的方法 class TicketRest { int ticket = 1; int Max = 0; public TicketRest(int max) { Max = max; } /// <summary> /// 未加锁 /// </summary> /// <param name="num"></param> public void SellTicketNoLock(int num) { while (ticket &

java多线程实现卖票小程序

1 package shb.java.demo; 2 /** 3 * 多线程测试卖票小程序. 4 * @Package:shb.java.demo 5 * @Description: 6 * @author shaobn 7 * @Date 2015-9-2下午7:49:53 8 */ 9 public class TestSyn { 10 public static void main(String[] args) { 11 //此注释为实现方式一 12 /*TicketDemo td = n

java多线程实现卖票程序

本文采用java多线程实现了模拟车站多个车票卖票的功能. 关键词:java多线程 共享变量 实现runnable接口 volatile  线程同步. 代码如下 Ticket类 package ex7_TicketSaler; /*同一对象的多个线程thread0/1/2,对共享变量count的操作,需要将count的值声明为volatile * 并且因为多个线程操作的是同一个对象ticket,因此count是资源共享的 * */ public class Ticket implements Ru

多线程之多窗口卖票&amp;线程之间的通信

案例一:使用多线程完成三个窗口卖票(不能出现重复卖票以及负数票) 卖票程序SellTicket 这里使用Lock类中的方法实现加锁和释放锁! package cn.itcast.thread2; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SellTicket implements Runnable { private int ticke