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();          
        }  

  • 相关阅读:
    httpd设置HTTPS双向认证
    crossdomain.xml的配置详解
    hibernate中的merge()方法
    解决java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver问题
    oracle自定义函数:将使用点分隔符的编码转成层级码格式的编码
    jsp页面科学计数法显示问题的解决办法
    javascript检索某个字符或字符串在源字符串中的位置(下标)
    webwork遍历数组标签
    过多得操作DOM会降低WEB应用的性能
    vue中$refs的用法及作用详解
  • 原文地址:https://www.cnblogs.com/tuojunjie/p/6223252.html
Copyright © 2011-2022 走看看