实验题目

分析
哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建5个线程来模拟卖票,当然这其中就包含多线程存在也就是我们要解决的问题,重复卖票和超额卖票。即多个窗口卖出同一张票以及窗口卖出非正数编号的票。
不过这个问题可以先放一下,我们先来创建基础的线程模型,并在主方法中创建五个线程让他们跑起来;
话不多说,上代码。
public class Ticket {
public static void main(String[] args) {
for(int i = 1;i <= 5;i++) {
//创建5个线程并启动他们
//注意一定要使用Thread类创建线程并使用start方法启动
//而不是直接创建TicketSeller对象调用run方法!!!!!!
new Thread(new TicketSeller(i)).start();
}
}
}
//售票类,实现Runnable接口,可以作为线程执行对象
class TicketSeller implements Runnable{
//该售票窗口编号
private int code;
public TicketSeller(int code) {
this.code = code;
}
@Override
public void run() {
for(int i = 0;i < 5;i++) {
System.out.println(code + "号窗口");
//为了使线程能够交替执行,打印完成语句让线程休眠一小会
try {
Thread.sleep(300);
} catch (InterruptedException e) {

本文通过一个Java多线程实验,详细分析了如何模拟售票过程,探讨了多线程环境下可能出现的重复售票和超额售票问题。通过逐步引入线程同步机制,如使用synchronized关键字和wait/notify机制,解决了并发卖票的挑战,确保了售票的正确性。
最低0.47元/天 解锁文章
6443

被折叠的 条评论
为什么被折叠?



