复制
收藏
提问
全网

设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1、要求打印出每个售票点所卖出的票号 2、各售票点不能售出相同票号的火车票 请给出JAVA代码

5月前
全网
文档
学术
百科
知识库
时间不限
自动

理解问题设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1、要求打印出每个售票点所卖出的票号 2、各售票点不能售出相同票号的火车票 请给出JAVA代码

已完成理解设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1、要求打印出每个售票点所卖出的票号 2、各售票点不能售出相同票号的火车票 请给出JAVA代码

展开阅读网页

为了设计一个多线程程序来模拟火车站售票情况,我们需要创建一个共享资源(火车票数量)和多个线程(售票点),并确保线程安全以避免售票点售出相同的票号。以下是一个简单的Java代码示例,实现了上述要求:

package com.hebust.java.third;

import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;

public class TicketSeller implements Runnable {
    // 使用AtomicInteger来确保线程安全
    private AtomicInteger ticketsRemaining = new AtomicInteger(100);

    // 每个售票点的编号
    private int sellerId;

    public TicketSeller(int sellerId) {
        this.sellerId = sellerId;
    }

    @Override
    public void run() {
        while (ticketsRemaining.get() > 0) {
            // 同步代码块,确保每次只有一个售票点可以卖票
            synchronized (this) {
                if (ticketsRemaining.get() > 0) {
                    int ticketNumber = ticketsRemaining.getAndDecrement();
                    System.out.println("Seller " + sellerId + " sold ticket number " + ticketNumber); // 打印售票信息
                }
            }
        }
    }

    public static void main(String[] args) {
        // 创建5个售票点线程
        TicketSeller[] sellers = new TicketSeller[5];
        for (int i = 0; i < 5; i++) {
            sellers[i] = new TicketSeller(i + 1);
            Thread thread = new Thread(sellers[i]);
            thread.start();
        }
    }
}

在这段代码中,我们使用了AtomicInteger来确保火车票数量的线程安全,避免多个线程同时修改票数。每个售票点通过getAndDecrement方法安全地获取并递减票数。此外,我们使用了synchronized关键字来确保在打印售票信息时,一次只有一个售票点可以执行该操作,从而避免了多个售票点打印相同的票号。

请注意,这段代码是一个简化的示例,实际应用中可能需要考虑更多的线程同步和错误处理机制。1345

更专业一些
转笔记
专业
设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1、要求打印出每个售票点所卖出的票号 2、各售票点不能售出相同票号的火车票 请给出JAVA代码
不在提醒

更专业内容正在努力生成中
知识树
设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况 1、要求打印出每个售票点所卖出的票号 2、各售票点不能售出相同票号的火车票 请给出JAVA代码
在线客服