简单的多线程买票模拟程序

/*
  需求:
  写一个简单的多线程模拟买票的程序
  四个买票窗口,一共有100张票

*/

class Tick implements Runnable{
         private static  int tick=100;
         private String window;
         public  void windowName(String window){
                 synchronized(Tick.class){
                    try{
                       Thread.sleep(1);
                      }catch(Exception e){}
                      
                       this.window=window;
                  }
         }
         public void show(Object obj){
            System.out.println(obj);
         }
         public void run(){
             while(tick>0){
                 synchronized(Tick.class){
                    try{
                       Thread.sleep(10);
                      }catch(Exception e){}
                      
                     if(tick>0)
                        show(window+": "+tick--+" 号票");
                     else
                         show(window+": 票已卖完");

}
             }
         }
   }

public class TicketDemo{
          public static void main(String args[]){

Tick tick0=new Tick();
               Tick tick1=new Tick();
               Tick tick2=new Tick();
               Tick tick3=new Tick();
               Thread t0=new Thread(tick0);
               Thread t1=new Thread(tick1);
               Thread t2=new Thread(tick2);
               Thread t3=new Thread(tick3);
               tick0.windowName("窗口1");
               tick1.windowName("窗口2");
               tick2.windowName("窗口3");
               tick3.windowName("窗口4");
               t0.start();
               t1.start();
               t2.start();
               t3.start();
          }

}

时间: 2024-09-29 23:31:21

简单的多线程买票模拟程序的相关文章

简单的多线程买票模拟程序(lock解决多线程存在大安全隐患)

—————————————————————— jdk1.5的lock代替synchronized,condition封装 Object对象里sleep,wait,notify ,notifyAll —————————————————————— /*  需求:  写一个简单的多线程模拟买票的程序  四个买票窗口,一共有100张票 */import java.util.concurrent.locks.*;   class Tick implements Runnable{         priv

多线程抢票系统浅析

笔者打算写个轻量版的秒杀系统,那么需要多线程模拟客户去抢购某个商品.故有想先写一个简单的多线程抢票系统加深一下对线程池,同步的理解. 1. 新建Java project,命名为ClientApp1, src文件夹里面新建demo文件夹. 项目结构如下, 2. 程序模拟的场景用例如下, 多个线程模拟多个客户去购买春运车票 每个客户购买车票[0,9],最少买0张,最多能买九张. 每个客户同步的买票,当某个线程在买票时,其他线程处于等待状态 所有客户线程买票完毕,主线程最后统计一共卖出多少张车票,切忌

【小白的java成长系列】——多线程初识(多人买票问题)

本来这节内容是要到后面来说的,因为最近在弄并发的问题,推荐一本书<java并发编程实战>,深入的讲解了多线程问题的.本人最近也刚好在看这本书,还不错的~ 多线程的相关概念,就不用说了的,自己可以去网上查找,有一大堆关于它的讲解~ 先来看看买票的程序: package me.javen.thread.one; public class TicketDemo { public static void main(String[] args) { // 使用Thread类的方式 // TicketTh

java多线程编程(3)买票

1,买票非同步版本 http://www.cnblogs.com/anbylau2130/archive/2013/04/17/3025347.html很详细 1 public class 多线程2 { 2 3 /** 4 * @param args 5 */ 6 public static void main(String[] args) { 7 // TODO Auto-generated method stub 8 Runnable r=new mythread(); 9 Thread t

java2 多线程2 买票

/** * 这样买票会出现卖出超过100张票,把num静态化可以解决这个问题 */ private static void test1(){ System.out.println("开始卖票"+Thread.currentThread().getName()); Ticket ticket= new Ticket(); Thread t1=new Thread(ticket); Thread t2=new Thread(ticket); Thread t3=new Thread(tic

poj 2828 Buy Tickets 【买票插队找位置 输出最后的位置序列+线段树】

题目地址:http://poj.org/problem?id=2828 Sample Input 4 0 77 1 51 1 33 2 69 4 0 20523 1 19243 1 3890 0 31492 Sample Output 77 33 69 51 31492 20523 3890 19243 Hint The figure below shows how the Little Cat found out the final order of people in the queue d

你好,C++(37)上车的人请买票!6.3.3 用虚函数实现多态

6.3.3  用虚函数实现多态 在理解了面向对象的继承机制之后,我们知道了在大多数情况下派生类是基类的“一种”,就像“学生”是“人”类中的一种一样.既然“学生”是“人”的一种,那么在使用“人”这个概念的时候,这个“人”可以指的是“学生”,而“学生”也可以应用在“人”的场合.比如可以问“教室里有多少人”,实际上问的是“教室里有多少学生”.这种用基类指代派生类的关系反映到C++中,就是基类指针可以指向派生类的对象,而派生类的对象也可以当成基类对象使用.这样的解释对大家来说是不是很抽象呢?没关系,可以

多线程—卖票

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_t

【老题未知】排队买票

Description 一个演唱会即将举行,现有 N 个歌迷排队买票,一个人一张,而售票处规定,一个人每次最多买两张,假设买一张票的时间为 Ti ( 1<=i<=N ) , 队伍中相邻的歌迷(第 j 个人和第 j+1 个人)也可以由其中的一个人买两张票的时间为 Ri, 假如 Rj < Ti+Tj+1, 这样做可以缩短后面的歌迷等待的时间,现给出 N , Ti,Rj, 求每个人买到票的最短时间和方法. Sample Input 4 1 2 3 4 4 4 5 Sample Output8