多线程模拟卖票程序,并统计各窗口售出数量

本文介绍如何使用Java实现一个多线程的售票程序,通过模拟多个售票窗口并发售出票的过程,同时详细阐述了如何进行线程同步以避免票数超卖,并提供了统计各窗口售出票数的方法。
摘要由CSDN通过智能技术生成
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

class Ticket implements Runnable
{
	private  int tick = 1000;
	//用于统计各窗口售出数量
	Map<String,Integer> map = new HashMap<String, Integer>();
	Object obj = new Object();
	
	public void run()
	{
		boolean flag = true;
		while(flag)
		{
			synchronized(obj)
			{
				if(tick>0)
				{
					String name = Thread.currentThread().getName();
					//null表示之前没售出过,现在的值为1,不为空的话在上一次基础上票数加1
					int currentCount = map.get(name)==null?1:map.get(name)+1;
					//将修改后的售票张数放回去
					map.put(name, currentCount);
//					System.out.println(name+"....sale : "+ tick);
					tick--;
				}else{
					flag = false;
				}
			}
		}

	}
}


public class  ThreadTest
{
	public static void main(String[] args) throws IOException, InterruptedException 
	{

		Ticket t = new Ticket();

		Thread t1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值