设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有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() + "\t当前票号:" + 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张票\n",  
                        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();          
    }  
}

Java多线程实现简单的售票程序的更多相关文章

  1. Java 多线程安全问题简单切入详细解析

    线程安全 假如Java程序中有多个线程在同时运行,而这些线程可能会同时运行一部分的代码.如果说该Java程序每次运行的结果和单线程的运行结果是一样的,并且其他的变量值也都是和预期的结果是一样的,那么就 ...

  2. java多线程实现卖票小程序

    package shb.java.demo; /** * 多线程测试卖票小程序. * @Package:shb.java.demo * @Description: * @author shaobn * ...

  3. Java多线程——<三>简单的线程执行:Executor

    一.概述 按照<Java多线程——<一><二>>中所讲,我们要使用线程,目前都是显示的声明Thread,并调用其start()方法.多线程并行,明显我们需要声明多个 ...

  4. java多线程的简单demo

    模拟场景:顾客买车从车库中取车,厂家生产车,车存储在车库中.买家.厂家对同一个车库中的车操作 一.不加同步机制的代码如下: package com.joysuch.testng.thread; imp ...

  5. java制作一个简单的抽签程序

    首先需要导入import java.util.Random;才能使用随机类Random:Random生成随机数介绍:https://www.cnblogs.com/prodigal-son/p/128 ...

  6. Java多线程之简单的线程同步实例

    数据类: package Thread.MyCommon; public class Data { public int num = 0; public synchronized int getEve ...

  7. JAVA多线程实现简单的点名系统

    效果图如下: CMain函数: package com.shubing.main; public class CMain { public static void main(String[] args ...

  8. 简单说明什么是递归?什么情况会使用?并使用java实现一个简单的递归程序。

    解答: 1)递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象. 2)递归算法一般用于解决三类问题: a.数据的定义是按递归定义的.(Fib ...

  9. java多线程实现简单队列

    1.创建Queue.java public class Queue { private LinkedList<Object> list = new LinkedList<Object ...

随机推荐

  1. ZOJ 1076 Gene Assembly(LIS+路径打印 贪心)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=76 题目大意:在一个DNA上,给定许多基因的起始位置和结束位置,求出这 ...

  2. javaScript常用方法整合(项目中用到过的)

    防止输入空格.缩进等字符: function trim(str){ return str.replace(/^\s+|\s+$/g,""); } JS去掉style样式标签 fun ...

  3. mysql备份和恢复

    摘自:http://safe.it168.com/a2009/1108/805/000000805490.shtml 要备份数据库" phpbb_db_backup " #mysq ...

  4. thinkphp3.2 namespace及use用法

    PHP 5.3中的namespace其实是个不错的东西,可以简化编程,下面介绍三类在代码中 访问namespace中类的方法 1 引用namespace和类   假设namespace的程序为name ...

  5. Day15 HTML补充、初识JavaScript

    一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...

  6. WebApi(一)-实现跨域返回格式支持json

    1.创建webapi

  7. JDK源码阅读(三) Collection<T>接口,Iterable<T>接口

    package java.util; public interface Collection<E> extends Iterable<E> { //返回该集合中元素的数量 in ...

  8. java程序编译

    Empoyee.java package Company; public class Empoyee { String name = ""; public Empoyee(Stri ...

  9. ASP 验证、查询AD域账户信息

    '''函数功能:查询域用户信息 '''参数说明:strAdmin-域管理账户:Password-域帐户密码:Domain-域服务器. ''' ''' 参考资料:http://www.experts-e ...

  10. Android+struts2+JSON方式的手机开发(Login)

    在手机的后台服务无论是调用WebService还是Http请求,多数都是采用Android的HttpClient实现相关的调用实现.本文实现Android+Struts2+JSON方式实现为手机前台提 ...