zoukankan      html  css  js  c++  java
  • Java多线程实现简单的售票程序

    设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况

    1、要求打印出每个售票点所卖出的票号

    2、各售票点不能售出相同票号的火车票

    package com.hebust.java.third;

    import java.util.Random;

    public class SaleTicket implements Runnable {

    public int total;

    public int count;

    public SaleTicket() {

    total = 100;

    count = 0;

    }

    public void run() {

    while (total > 0) {

    synchronized (this) {

    if(total > 0) {

    try {

    //Thread.sleep(800);

    Thread.sleep(new Random().nextInt(1000));

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    count++;

    total--;

    System.out.println(Thread.currentThread().getName() + " 当前票号:" + count);

    }

    }

    }

    }

    public static void main(String[] args) {

    SaleTicket st = new SaleTicket();

    for(int i=1; i<=5; i++) {

    new Thread(st, "售票点" + i).start();

    }

    }

    }

    第二种方法

    public class MyThread4 extends Thread  
    {  
        public static int tickets = 100;  //static不能省  
        public static String str = new String("哈哈");  //static不能省  
        private Object obj = new Object();       
        public void run()  
        {  
            while (true)  
            {  
                synchronized (obj)  
                {  
                    if (tickets > 0)  
                    {  
                        System.out.printf("%s线程正在卖出第%d张票 ",  
                            Thread.currentThread().getName(), tickets);  
                        --tickets;    
                    }  
                    else  
                    {  
                        break;  
                    }  
                }  
            }  
        }  

    public class rain  
    {  
        public static void main(String[] args)  
        {  
            MyThread4 aa1 = new MyThread4();  
            aa1.start();      
                  
            MyThread4 aa2 = new MyThread4();  
            aa2.start();          
        }  

  • 相关阅读:
    Python中文乱码
    Python读写Excel
    Image File Execution Options(2)
    Image File Execution Options(转)
    IndentationError: unexpected indent python
    java中class.forName和classLoader加载类的区分
    vi 新建编辑文件时报错 E212 can’t open file for writing
    JAVA NIO 之ByteBuffer的mark、position、limit、flip、reset,get方法介绍
    从0x00到0xFF的含义以及二进制到10进制的转换(转)
    java匿名内部类之RocketMQ中的应用
  • 原文地址:https://www.cnblogs.com/tuojunjie/p/6223252.html
Copyright © 2011-2022 走看看