首页 > 其他分享 >题目:买火车票

题目:买火车票

时间:2022-10-08 14:13:59浏览次数:47  
标签:窗口 Thread start new 题目 BuyTicketThread public 火车票

窗口抢票简单实现

package com.gao.Project.Pro7;

public class BuyTicketThread extends Thread{
    //有参构造器
    public BuyTicketThread(String name){
        super(name);//调用父类构造器传名字
    }
    //一共10张票
    static int ticketNum = 10;  //多个对象共享10张票
    //每个窗口都是一个线程对象:每个对象执行的代码放入run方法中
    @Override
    public void run() {
        //每个窗口后面都有100个人在抢票
       for (int i = 1; i<=100; i++) {
           if(ticketNum > 0){//对票数进行判断
               System.out.println("我在"+this.getName()+"买到了北京到哈尔滨的第"+ ticketNum-- +"张车票");
           }
       }
    }
}

package com.gao.Project.Pro7;

public class Test {
    public static void main(String[] args) {
        //多个窗口抢票:三个窗口--->三个线程对象
        BuyTicketThread t1 = new BuyTicketThread("窗口1");
        t1.start();
        BuyTicketThread t2 = new BuyTicketThread("窗口2");
        t2.start();
        BuyTicketThread t3 = new BuyTicketThread("窗口3");
        t3.start();
    }
}

多次运行会出现错误错误:例如同一张票重复被购买,出现0票负数票等问题

窗口抢票加强版

package com.gao.Project.Pro8;

public class BuyTicketThread implements Runnable {//实现Runnable接口
    int ticketNum = 10;
    @Override
    public void run() {
        for (int i = 1; i <100 ; i++) {
            if (ticketNum>0){
                System.out.println("我在窗口"+Thread.currentThread().getName()+ "买到了北京到哈尔滨的第"+  ticketNum--  +"张车票");
            }

        }
    }
}

package com.gao.Project.Pro8;

import java.util.concurrent.TransferQueue;

public class Test {
    public static void main(String[] args) {
        //定义一个线程对象
        BuyTicketThread bt = new BuyTicketThread();
        //窗口1买票
        Thread bt1 = new Thread(bt,"窗口1");
        bt1.start();
        //窗口2买票
        Thread bt2 = new Thread(bt,"窗口2");
        bt2.start();
        //窗口3买票
        Thread bt3 = new Thread(bt,"窗口3");
        bt3.start();
    }
}

标签:窗口,Thread,start,new,题目,BuyTicketThread,public,火车票
From: https://www.cnblogs.com/gaoxiaocuo/p/16768761.html

相关文章

  • 题目:披萨商店
    题目:普通实现:packagecom.gao.Project.Pro2;publicclassPizza{//父类:共同的属性:名称,大小,价格//共同的方法:展示披萨的信息//属性:privat......
  • Shell及Linux常见易错题目题库-Shell/Linux-选择、简答、判断、编程
    1、以下不合法的shell头是(不合法指运行会报错)(   )A.#!/bin/bashB.#-/bin/bashC.!#/bin/bash答案:C 2、if[$2-a$2="test"]中-a是什么意思(  )A.大于B.减C.......
  • 题目的解法(思路正确但是时间复杂度过高的错误解法)
    前言:仅为了纪念那个不甘的心(悲)1.P1002[NOIP2002普及组]过河卒(洛谷)#include<stdio.h>#include<iostream>usingnamespacestd;intans;//答案intx_end,y_end......
  • 贤鱼的刷题日常--P1022 [NOIP2000 普及组] 计算器的改良--题目详解
    ......
  • 记录一个 Full of accomplishment & 纯手调了一天 的题目
    P1018乘积最大艰辛历程AC&未去除调试注释(不用你数,141行)#include<iostream>#include<cstdio>#include<string>#include<cstring>#definelllonglong......
  • 顺序表题目
    1.顺序表上的查找题目描述:定义函数,传入要被查找的顺序表和要查找的值,如果找到返回值的索引,不存在则返回-1,并输出"不存在"即可。intsearch(RankListran,intval){......
  • 9.29题目大赏
    2022-9-29前两道真的很水,然而我写挂了QAQT1智力大冲浪简单得不能再简单的贪心。先将每个游戏按扣钱为第一关键字降序,时刻为第二关键字升序排列。因为我们希望无法完成......
  • LeetCode - 字符串类型题目
    剑指Offer05.替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。方法:双指针首先统计空格数量count,然后为原字符串数组扩展出2*count的空间,用来存......
  • 题目
    题目1.列举你所了解的计算机存储设备类型?答:随机存储器RAMSRAM、DRAM(SDRAM、RDRAM、CDRAM等)只读存储器ROMMROM、PROM、EPROM、EEPROM2.一般代码存储在计算机的哪个设备中?......
  • Atcoder 题目选做
    ABC257G直接考虑\(\rmKMP\)的过程。\(\rmKMP\)可以帮助我们求出\(S\)的\(border\),并找到\(T\)中每一个位置能匹配上的\(S\)的最长前缀。那么我们就可以很......