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
多线程模拟卖票程序,并统计各窗口售出数量
最新推荐文章于 2024-05-18 22:58:08 发布
本文介绍如何使用Java实现一个多线程的售票程序,通过模拟多个售票窗口并发售出票的过程,同时详细阐述了如何进行线程同步以避免票数超卖,并提供了统计各窗口售出票数的方法。
摘要由CSDN通过智能技术生成