/**
*
* 有100张票 四个售票窗口 每个窗口代表一个线程
*
*/
public class Test7 {
public static void main(String[] args) {
SaleTicket t = new SaleTicket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
//当前线程使用sleep()的时候那么synchronized同步就会失效,会执行其他的线程
public class SaleTicket implements Runnable {
private int tickets = 100;
public void run() {
while (true) {
synchronized (this) {
if (tickets > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
Thread t = Thread.currentThread();
System.out.println(t.getName() + "卖出车票:" + tickets);
tickets--;
} else {
break;
}
}
}
}
}
分享到:
相关推荐
在这个“线程同步解决火车站售票问题”的例子中,我们可以通过线程同步机制来实现售票的有序、无冲突的过程。 首先,我们需要理解问题的核心:10个售票处(线程)需要共享1000张票(资源),并且每卖出一张票,必须...
pthread.h是UNIX的一个库,windows需要拖 库
- `DWORD WINAPI ThreadProc1(LPVOID lpParameter)` 和 `DWORD WINAPI ThreadProc2(LPVOID lpParameter)` 是两个线程函数,它们分别代表第一个和第二个售票线程。 - **事件句柄**:`HANDLE hEvent;` 定义了一个事件...
title: 3-1-案例-售票&线程状态- Java多线程基础- Java多线程案例categories: Java多线程基础售票案例线程状态售票的动作需要被
文章中提供了一个简单的示例,用TicketSale类实现了Runnable接口,通过synchronized关键字修饰代码块,在售票线程中控制对票数的访问。在这个示例中,通过一个while循环来模拟售票过程,每次售票前通过synchronized...
标题中的“一个单线程的工程”指的是一个计算机程序或软件开发项目,它仅使用一个执行线程来处理所有任务。在多线程编程中,不同的线程可以并发执行不同的任务,提高程序效率,但本工程选择单线程设计可能出于简化、...
JAVA多线程售票系统 本资源摘要信息将围绕JAVA多线程售票系统展开,涵盖多线程编程、同步机制和售票系统的设计思想。 多线程编程 在JAVA中,多线程编程是指在一个程序中使用多个线程来执行不同的任务,以提高程序...
在本文中,我们将深入探讨如何使用多线程技术来模拟火车站售票系统,主要涉及C++编程语言中的线程同步和Windows编程。多线程技术在处理并发任务时能显著提高程序效率,尤其在大型系统中,如火车站售票系统,它需要...
多线程+售票案例 在软件开发中,多线程是一种非常重要的概念,它可以大大提高程序的执行效率和响应速度。在这个文件中,我们将详细介绍多线程的概念、特点、创建方法、线程状态、线程之间的关系等知识点,并通过...
### 售票窗口模拟线程同步:深入解析与实现 在多线程环境中,线程同步是一项关键的技术,用于确保多个线程访问共享资源时的正确性和一致性,避免资源竞争和数据不一致等问题。本文将通过一个具体的案例——售票窗口...
本教程将聚焦于使用Delphi这一强大的Windows应用程序开发工具来实现多线程,特别是模拟一个售票系统,以展示多线程如何在实际场景中应用。 Delphi是Borland公司(现Embarcadero Technologies)推出的一款集成开发...
"多线程设计一个火车售票模拟程序" 在本实验中,我们将使用 Java 语言来设计一个火车售票模拟程序。这个程序模拟了火车站中的售票情况,具有5个售票点,每个售票点都可以售出火车票。我们将使用多线程技术来实现这...
在描述中提到的电影院售票模拟,需要创建多个售票线程,每个线程代表一个售票窗口。线程间需同步以保证电影票的有序出售,避免重复售出同一张票。可以使用synchronized关键字或Lock接口来实现同步控制。 7. **题目...
在本实验中,我们探讨了如何使用C语言和Windows API实现多线程来模拟汽车司机与售票员的同步操作。这个实验旨在展示并发执行的线程如何通过同步机制协同工作,确保程序的正确运行。 首先,多线程是操作系统中的一种...
在火车售票系统中,当票池为空时,售票线程可能需要等待其他线程补充票池后再继续售票。 9. **设计模式** 在多线程编程中,生产者消费者模式、读写锁模式等设计模式经常被用来解决并发问题。在火车售票系统中,...
在计算机科学领域,多线程是一种...总结来说,"多线程售票系统"涉及了线程的创建、线程入口函数、线程同步与通信、异常处理、资源管理等多个关键概念。理解和正确应用这些概念对于构建高效、稳定的并发系统至关重要。
C语言是一种广泛应用于系统开发、软件工程以及嵌入式系统的高级编程语言,因其高效、灵活和可移植性而备受程序员喜爱。"C程序设计实验指导书"是学习C语言编程的重要辅助材料,它通常包含一系列小实验,旨在帮助初学...
6. **并行与分布式系统**:介绍并发编程的挑战、线程和进程间的协作,以及分布式系统的原理和通信机制。 7. **调度算法**:学习不同的进程调度策略,如FCFS(先来先服务)、SJF(最短作业优先)、优先级调度和多级...
### Java多线程同步机制在售票系统的实现 #### 一、引言 随着计算机硬件的发展,多核处理器已经成为主流配置,这为多线程编程提供了更广阔的应用场景。多线程能够充分利用多核处理器的优势,提高程序的并发性和...
1. 售票线程:负责处理购票请求,检查库存,扣除票数,并更新数据库。 2. 查询线程:实时读取数据库中的票务信息,快速响应用户的查询请求。 3. 更新数据库线程:在后台定期同步购票和退票操作,确保数据的一致性和...